ios 多任务机制

多任务机制是苹果在iOS4中引进的,我们首先新建一个工程,查看下appdelegate文件中的内容:

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { 

  2. // Override point for customization after application launch.

  3. // Set the view controller as the window's root view controller and display.

  4. return YES;
  5. }
  6. - (void)applicationWillResignActive:(UIApplication *)application {

  7. }


  8. - (void)applicationDidEnterBackground:(UIApplication *)application {

  9. }


  10. - (void)applicationWillEnterForeground:(UIApplication *)application {

  11. }


  12. - (void)applicationDidBecomeActive:(UIApplication *)application {

  13. }


  14. - (void)applicationWillTerminate:(UIApplication *)application {

  15. }
复制代码


以上的函数就是ios4中引入的用于支持多任务运行的函数.从函数名我们就可以猜测到程序可能的一些状态:background,active. 图1就是程序的生命周期图.

1.png



我们来看一下:程序第一次启动,从Not Running状态进入active阶段,程序会调用两个函数:

  • didFinishLaunchingWithOptions:   加载完成 和
  • applicationDidBecomeActive: 开始活动

此时点击home键,程序就会进入后台直至进入挂起状态,程序会依次调用下述函数:

  • applicationWillResignActive:   离开活动
  • applicationDidEnterBackground:   进入后台

这时双击home键再进入该程序时,程序会依次调用:

  • applicationWillEnterForeground:   进入前台
  • applicationDidBecomeActive:   开始活动

注意到Background包含running和suspend两种状态.这里的running不是真正意义上的程序运行,而是指的 applicationDidEnterBackground:运行部分,通常情况下,系统给此函数执行的时间不会太多,并且执行完后程序就在后台挂起. 这就是iOS多任务的绝大部分情形,但是等一下,就三种情况苹果是允许你在后台运行的                                      

  • 音乐
  • 位置
  • VoIP

你可以在程序中的plist文件中进行设置,如图2:

2.png

可以这么说,除了这三种服务允许以我们通常认为的多任务机制在后台运行,其他的程序的多任务,就是上文所指的程序状态.这里不讨论为啥苹果要这样 做,只是稍微说明一下,在这种情况下,至少是在表面上实现了多任务:比如说我玩了愤怒的小鸟又想看下天气,然后又想玩小鸟了,这时切换就比较容易,因为程 序这时是在后台挂起,还是在内存中运行着的,这样再启动时就会比较快.

程序调用相应函数的时候,系统会发送相应的Notification,这时app就应该适时的保存app状态或是读取app的历史状态,这样才能更好的呈现用户体验.

之前说过,程序进入后台的时间很短,有时候app要做的操作还没来得及进行.这时,我们可以使用beginBackgroundTaskWithExpirationHandler:来处理耗时可能比较长的操作.

总结一下:

ios所谓的多任务并不是我们通常以为的多任务,ios只允许三种服务在后台运行;其他的只是方便多个app之间的切换.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值