IOS后台程序运行

IOS7对程序后台运行进行了加强,在IOS7之前及IOS4之后主要有三类的应用程序能够后台运行:

1、音频播放

2、后台定位服务

3、IP电话

除了这三种应用,其他程序只能是在进入后台之前向系统请求一个额外的运行时间(最长为10分钟),并在该时间内来进行后台运行操作,如保存用户信息,上传或者下载数据,进行视频编码等操作。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  static UIBackgroundTaskIdentifier task;
  task = [application beginBackgroundTaskWithExpirationHandler:^{
     task = UIBackgroundTaskInvalid;
 	};
  // 执行后台操作
  [application endBackgroundTask:task];
}
IOS7支持了两种新的程序后台运行模式:

1、需要定期请求数据的程序可以在系统中注册,这样程序就可以在后台被定期唤醒来下载新的数据。

       这种情况需要在程序的Info.plist文件中UIBackgroundModes项增加fetch类型,同时通过setMinimumBackgroundFetchInterval:方法来设置程序定期获取数据的最小时间间隔。

       需要实现application:performFetchWithCompletionHandler:代理方法并在该方法内执行下载操作

2、程序可以通过后台消息推送服务来通知用户有新的需要可以下载,同时激活后台下载操作。这种需要在UIBackgroundModes项中增加remote-notification值,同时需要实现             appDelegate方法application:didReceiveRemoteNotification:fetchCompletionHandler:来执行你的下载操作。

不管是支持fetch或remote-notification后台运行模式的程序,都有可能被系统在核实的时候启动或从后台挂起状态移除掉。在fetch模式下,系统会利用有效的信息来决定启动或激活程序的最佳时期。支持remote-notification的程序,可以在接收到推送消息的时候被唤醒,但在用户接收到推送消息之前,程序可以通过定期获取的形式下载最新内容,并在随后的推送消息之前就已经准备好将内容展现给用户。


IOS7还有2个需要注意的区别:

1、IOS7以前,应用进入后台继续运行时,如果用户锁屏了,那么IOS会等待应用运行完,才进入睡眠状态。而在IOS7上,系统会很快进入睡眠状态,哪些后台应用也就暂停了。如果收到事件被唤醒(例如定时事件,推送、位置更新等),后台应用才能继续运行一会。

2、由于app switcher的存在,应用即使在后台。用户仍然能看到退出前的快照。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值