首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复调用beginBackgroundTaskWithExpirationHandler

重复调用beginBackgroundTaskWithExpirationHandler
EN

Stack Overflow用户
提问于 2016-04-29 17:29:39
回答 1查看 164关注 0票数 0

我正在评估一些代码,这些代码正在堆叠对beginBackgroundTaskWithExpirationHandler的调用,以便在后台留下一个计时器。必须承认这是一个相当聪明的想法,但不确定这是否是最佳做法。

所以流量:

  1. 用回调处理程序调用beginBackgroundTaskWithExpirationHandler
  2. 当它回来的时候,做点什么,然后再打电话
  3. 冲洗并重复,检查沿途是否有TaskInvalid

我知道180秒是最大的时间,但在某些情况下这可以更短。

关于下列问题:

1:这样合法吗?

他说:你会怀疑苹果会不会一遍又一遍地给应用程序3分钟的背景信息,从而让这个过程在后台停留一个小时?

他说:你能指望这个吗?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-04-29 22:58:22

你会怀疑苹果公司会不会一遍又一遍地给应用程序3分钟的背景信息,从而在后台留下一个小时的时间?

不,即使你能做到,苹果也不会同意。他们规定了3分钟的时间限制是有原因的,以确保我们不会在用户不知情的情况下在后台运行应用程序,消耗CPU周期、内存和耗尽电池。(事实上,“有限任务”的限制曾经是5分钟,但几年前苹果公司又将其限制在3分钟以内。)想象一下世界上所有的应用程序开发者都经常回避这3分钟的限制,我们的设备会很快耗尽电池,前台应用程序的响应能力会降低,使用的内存也会减少。

话虽如此,苹果已经确定了一套非常狭窄的操作,可以在后台继续运行(VOIP、导航应用、音乐应用、蓝牙操作等),用户对电池和性能的影响有合理的期望。

还有一类任务使用一些有限的后台功能(例如,请求时间来完成一些有限长度的任务、机会性的周期性背景获取、重要的更改位置服务、给用户一个响应推送或本地通知的机会等等)。其目的是在背景功能之间提供有意义的平衡,同时最小化电池的影响。

总之,苹果公司不鼓励/限制不分青红皂白的后台操作。在App商店指南中,他们明确表示

2.16多任务应用程序只能将后台服务用于其预期目的: VoIP、音频播放、位置、任务完成、本地通知等。 ..。 4.5使用后台定位服务的应用程序必须提供明确用途的理由,使用“人机界面指南”中描述的机制

话虽如此,如果您描述了您需要这个后台操作的确切目的,我们可能能够描述苹果公司提供的多种不同的后台功能中,有哪些可以用来达到预期的效果。所有这些接口都是为了解决特定的问题而设计的,同时平衡功能和设备上的稀缺资源。但是如果是“嗨,我想每五分钟打开我的服务器”,那就不,苹果会对此皱眉的。

有关更多信息,将在应用程序编程指南的后台执行一章中对此进行详细讨论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36944284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档