zoukankan      html  css  js  c++  java
  • 图解ios程序生命周期

    图解ios程序生命周期

      应用程序启动后状态有Active、Inactive、Background、Suspended、Not running这5种状态,几种状态的转换见下图:

      在AppDelegate中实现app状态变化时的回调函数,在 app状态发生变化时,系统会执行相应回调:

    - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
          告诉代理进程启动但还没进入状态保存
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
         告诉代理启动基本完成程序准备开始运行
    - (void)applicationWillResignActive:(UIApplication *)application
        当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了
    - (void)applicationDidBecomeActive:(UIApplication *)application 
         当应用程序入活动状态执行,这个刚好跟上面那个方法相反
    - (void)applicationDidEnterBackground:(UIApplication *)application
        当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可
    - (void)applicationWillEnterForeground:(UIApplication *)application
           当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。
    - (void)applicationWillTerminate:(UIApplication *)application
           当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。
    - (void)applicationDidFinishLaunching:(UIApplication*)application
           当程序载入后执行

    1.程序启动时:

      如图所示,当App启动时,首先由not running状态切换到inactive状态,此时调用application:didFinishLaunchingWithOptions:方法;然后由inactive状态切换到active状态,此时调用applicationDidBecomeActive:方法。

    2.程序进入后台

      进入后台后,如果没有要求此app在后台运行(可以后台运行的几种情况在第一张图上有说明),那么程序的状态(比如什么时候suspend什么时候not running)完全有系统控制.

      当切换到另一个App时,由状态active切换到inactive,此时调用applicationWillResignActive:方法;然后从inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。

    3.程序返回前台

      而当切换回本来的App时,由running状态切换到inactive状态,此时调用applicationWillEnterForeground:方法,然后由inactive状态切换到active状态,调用applicationDidBecomeActive:方法。

    4.中断

    当App发生中断时(来电话或拉出上面工具栏),由active状态切换到inactive状态,此时调用applicationWillResignActive:方法。

    5.锁屏

      当手机锁屏时,由状态active切换到inactive,此时调用applicationWillResignActive:;然后再由inactive状态切换到running状态,此时调用applicationDidEnterBackground:方法。

    6.程序终止

      程序只要符合以下情况之一,只要进入后台或挂起状态就会终止:
    (1)iOS4.0以前的系统,app是基于iOS4.0之前系统开发的,设备不支持多任务。
    (2)在Info.plist文件中,程序包含了 UIApplicationExitsOnSuspend  键。
    (3)系统资源不足时系统调度终止app。
      app如果终止了  ,系统会调用app的代理的方法 applicationWillTerminate,这样可以让你可以做一些清理工作。你可以保存一些数据或app的状态。这个方法也有5秒钟的限制。超时后方法会返回程序从内存中清除。
      注意:用户可以手工关闭应用程序。

    参考

    1. iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    2. 深度解析iOS应用程序的生命周期

    3. iOS 7 的新后台多任务(multitasking)机制是如何工作的

      

  • 相关阅读:
    在 Vim 中,删除 ^@ 符号的几种方法
    西瓜书机器学习算法脉络梳理之聚类
    西瓜书机器学习算法脉络梳理之集成学习
    西瓜书机器学习算法脉络梳理之贝叶斯分类器
    springboot项目,打包时携带所有依赖
    【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
    Tomcat组件梳理—Service组件
    Tomcat组件梳理—Digester的使用
    Tomcat组件梳理--Server
    Tomcat组件梳理--Catalina
  • 原文地址:https://www.cnblogs.com/BigFeng/p/5187375.html
Copyright © 2011-2022 走看看