iOS App Programming Guide 要点记录

   跟上一篇同样,这篇也主要作一些要点记录html


       一、app终止也看成app正常生命周期的一部分,若是app是被挂起的,是接收不到被终止的消息的。若是app正在运行或者app在后台但没被挂起,appdelegate是会接收到applicationWillTerminate:通知的。无论是用户仍是系统要杀,通知行为是同样的。ios

   二、应该启动的时候当任务关系到构造正确的界面时才应该在主线程执行,其它任务都应该异步执行。app

  

  三、iOS三类后台执行的状况
  (1)app启动了一个短暂的任务,当app进入后台时向系统申请更多时间把任务完成。
  (2)利用NSURLSession离线下载,这种状况就算程序被挂起或终止都是能够的。
  (3)要在后台运行的以支持某些特殊任务,如播歌,定位等。
 
  (1)申请时间执行任务比较简单,看代码一目然
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
        // Clean up any unfinished task business by marking where you
        // stopped or ending the task outright.
        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Do the work associated with the task, preferably in chunks.

        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

但注意的是不管时本身任务执行完毕或者系统告诉你申请的时间已经到了的时候必定要调endBackgroundTask:告诉系统你能够被挂起了,无论你是否完成了你所作的任务。不然就会被系统杀掉。也能够经过backgroundTimeRemaining知道申请的时间剩余多少。异步

  (2) 对于后台下载可参考NSURLSession。但有些东西仍是有必要了解和备注:若是是系统挂起或者说杀死app,它才会继续NSURLSession的后台任务,若是是用户主动杀掉应用,系统会取消掉全部未完成的下载任务。async

  (3)容许后台运行的状况:
  app须要后台播放能够听得见的内容,如音乐。
  app须要后台录音
  app须要一直知道用户位置,如导行软件。
  app支持VoIP
  app须要常常性下载和处理新内容的,Background Fetch。
  apps须要常常接收外部更新 
 
  四、Background Fetch:这个要与申请后台时间有点似,建议不该该下载大内容。系统并不会保证必定会唤起你的应用并调用你的 application:performFetchWithCompletionHandler:,它会平衡全部其它应用才决定要不要调你的。这里能够用做检查一些更新,配合NSURLSession的后台下载实现一些更好的功能。
 
  五、 本地通知能够在应用被挂起或着没在运行时也能给用户提醒。
  六、 只有一种状况用户主动杀掉程序后系统还会帮咱们后台调起,那就是iOS8 以后的地理位置相关的应用。
  七、Being a Responsible Background App 作一个负责的后台应用,有点搞笑,也有点用。
进入后台时咱们能够为程序准备咱们的截图给系统显示,使用 snapshotViewAfterScreenUpdates:保证咱们的应用更新后才会被截图,setNeedUpdates只会在下一runloop重绘不能保证。
 
进入后台释放一些内存是个好习惯,减小被系统杀掉的可能。 
  八、重要的数据不能够生的数据放在document目录下,如别人发来的消息。
caches目下放可再生的数据,并若是因系统要清理空间被系统删除,应用应该是要作到正常使用,不能受此影响
应用升级只会保留document和library目录下的数据 
 
相关文章
相关标签/搜索