关于iOS后台任务的

文章所提到的时间均为iOS8下测试得到,iOS7以前的时间会有不同。


首先简单地说下iOS APP后台状态的一些信息:

1. 当APP在前台状态,发生了以下一些用户事件,APP就会进入后台状态,包括:单击home键(双击不会),切换到其他APP,APP内访问了其他APP(如APP内打开了URL,跳转到了Safari浏览器),锁屏(不知道还有没有其他情况)。

当用户点击了两下home键之后,APP就会调用 applicationDidEnterBackground: 方法,APP进入后台状态(如果是切换到其他程序的情况,例如APP内打开了URL,跳转到了Safari浏览器,不知道是不是也是进入后台状态);


2. 正常状态下,进入后台状态后有10秒时间执行 applicationDidEnterBackground: 方法下轻量的保存APP信息的工作 ,10秒后APP进入挂起状态(application.backgroundTimeRemaining 属性可得进入挂起状态的剩余时间);(关于更详细的APP状态的解释:iOS应用程序生命周期(前后台切换,应用的各种状态)详解


3. 若需要得到更长的后台任务运行时间,可于 applicationDidEnterBackground: 方法下调用 [application beginBackgroundTaskWithExpirationHandler:] 方法,则可将进入挂起状态时间刷新到3分钟;(该方法的block参数中必须实现[application endBackgroundTask:]方法,否则 the system may kill your app (官方文档原话。。))


4. 有一点需要注意的是,在任何非锁屏状态下按下 锁屏按钮(我不知道那个按钮叫啥。。),APP立刻进入挂起状态,但是仍然会调用applicationDidEnterBackground: 方法


5. 在挂起状态下程序在后台不能执行代码,所以基本上不用的程序在最多也只能运行3分钟,这也是为什么苹果用户完全不用担心应用会不会在后台偷跑,续航也比安卓好得多的原因。但是要让程序在后台一直运行也不是不可能,但是只能限制在几种情况之下:

1).App registers for location updates
2).App provides Voice over IP services
3).App plays audio
4).App processes Newsstand Kit downloads
5).App communicates using CoreBluetooth
6).App shares data using CoreBluetooth





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值