我正在评估一些代码,这些代码正在堆叠对beginBackgroundTaskWithExpirationHandler的调用,以便在后台留下一个计时器。必须承认这是一个相当聪明的想法,但不确定这是否是最佳做法。
所以流量:
我知道180秒是最大的时间,但在某些情况下这可以更短。
关于下列问题:
1:这样合法吗?
他说:你会怀疑苹果会不会一遍又一遍地给应用程序3分钟的背景信息,从而让这个过程在后台停留一个小时?
他说:你能指望这个吗?
提前感谢!
发布于 2016-04-29 22:58:22
你会怀疑苹果公司会不会一遍又一遍地给应用程序3分钟的背景信息,从而在后台留下一个小时的时间?
不,即使你能做到,苹果也不会同意。他们规定了3分钟的时间限制是有原因的,以确保我们不会在用户不知情的情况下在后台运行应用程序,消耗CPU周期、内存和耗尽电池。(事实上,“有限任务”的限制曾经是5分钟,但几年前苹果公司又将其限制在3分钟以内。)想象一下世界上所有的应用程序开发者都经常回避这3分钟的限制,我们的设备会很快耗尽电池,前台应用程序的响应能力会降低,使用的内存也会减少。
话虽如此,苹果已经确定了一套非常狭窄的操作,可以在后台继续运行(VOIP、导航应用、音乐应用、蓝牙操作等),用户对电池和性能的影响有合理的期望。
还有一类任务使用一些有限的后台功能(例如,请求时间来完成一些有限长度的任务、机会性的周期性背景获取、重要的更改位置服务、给用户一个响应推送或本地通知的机会等等)。其目的是在背景功能之间提供有意义的平衡,同时最小化电池的影响。
总之,苹果公司不鼓励/限制不分青红皂白的后台操作。在App商店指南中,他们明确表示
2.16多任务应用程序只能将后台服务用于其预期目的: VoIP、音频播放、位置、任务完成、本地通知等。 ..。 4.5使用后台定位服务的应用程序必须提供明确用途的理由,使用“人机界面指南”中描述的机制
话虽如此,如果您描述了您需要这个后台操作的确切目的,我们可能能够描述苹果公司提供的多种不同的后台功能中,有哪些可以用来达到预期的效果。所有这些接口都是为了解决特定的问题而设计的,同时平衡功能和设备上的稀缺资源。但是如果是“嗨,我想每五分钟打开我的服务器”,那就不,苹果会对此皱眉的。
有关更多信息,将在应用程序编程指南的后台执行一章中对此进行详细讨论。
https://stackoverflow.com/questions/36944284
复制相似问题