zoukankan      html  css  js  c++  java
  • 20160512 UIApplecation shuxun

    2016-03-22 13:58:37.681 HBLifeCircleTest[2705:146296] -[AppDelegate application:didFinishLaunchingWithOptions:]
    2016-03-22 13:58:37.685 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidBecomeActive:]
    //点击home键
    2016-03-22 14:00:06.786 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillResignActive:]
    2016-03-22 14:00:07.503 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidEnterBackground:] //点击应用 2016-03-22 14:00:11.134 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillEnterForeground:] 2016-03-22 14:00:11.647 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidBecomeActive:]
    //双击home退出 2016-03-22 14:00:19.463 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillResignActive:]
    2016-03-22 14:00:28.677 HBLifeCircleTest[2705:146296] -[AppDelegate applicationDidEnterBackground:] 2016-03-22 14:00:28.680 HBLifeCircleTest[2705:146296] -[AppDelegate applicationWillTerminate:]


    IOS的应用程序一共有5种状态。

    • Not running(未运行):程序未启动
    • Inactive(未激活):其他两个状态切换时出现的短暂状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时?或者系统提示用户去响应Alert窗口(如来电、信息)时
    • Active(激活):在屏幕上显示的正常运行状态,该状态下可以接收用户输入并更新显示
    • Backgroud(后台):程序在后台且能执行代码。用户按下Home键不久后进入此状态(先进入了Inactive状态,再进入Background状态),然后会迅速进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
    • Suspended(挂起):程序在后台不能执行代码。普通程序在进入Background状态不久后就会进入此状态。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存

    关于Active和Inactive的切换:
    应用程序在前台时有2种状态:Active和Inactive。大多数情况下,Inactive状态只是其他两个状态切换时出现的短暂状态(不是任意两个状态之间的切换都会进入Inactive,见图),如打开应用,它会从Not Running先进入Inactive再进入Active;如前后台应用切换时,Inactive会在Active和Background之间短暂出现。但是也有其他情况,Active和Inactive可以在前台运行时进行切换,比如系统弹出Alert,此时应用会从Active切换到Inactive,直到用户确认再返回Actvie;再如用户拉下通知页,也会发生Active和Inactive的切换;还有来电但拒接、双击Home键但返回原应用等都不进入Background,而只是在Active和Inactive切换。


    状态切换图

    1.application:didFinishLaunchingWithOptions:
    程序首次已经完成启动时执行,若直接启动,launchOptions中没有数据;否则,推送,3Dtouch等方式打开应用。launchOptions将包含对应方式的内容。
    2.applicationWillResignActive(将进入后台)
    程序将要失去Active状态时调用,比如按下Home键或有电话信息进来。对应applicationWillEnterForeground(将进入前台),这个方法用来
    暂停正在执行的任务;
    禁止计时器;
    减少OpenGL ES帧率;
    若为游戏应暂停游戏;
    总结为一个字:停!
    3.applicationDidEnterBackground(已经进入后台)
    程序已经进入后台时调用,对应applicationDidBecomeActive(已经变成前台),这个方法用来
    释放共享资源;
    保存用户数据(写到硬盘);
    作废计时器;
    保存足够的程序状态以便下次恢复;
    总结为4个字:释放、保存!
    4.applicationWillEnterForeground(将进入前台)
    程序即将进去前台时调用,对应applicationWillResignActive(将进入后台)。这个方法用来撤销applicationWillResignActive中做的改变。
    5.applicationDidBecomeActive(已经进入前台)
    程序已经变为Active(前台)时调用。对应applicationDidEnterBackground(已经进入后台)。若程序之前在后台,最后在此方法内刷新用户界面。
    6.applicationWillTerminate
    程序即将退出时调用。记得保存数据,如

    其他类使用相应NotificationCenter通知来感知这些状态变化。

     

    
    

    文/HustBroventure(简书作者)
    原文链接:http://www.jianshu.com/p/3ffe5bd4c949
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
     
  • 相关阅读:
    [转]Java中实现自定义的注解处理器
    [转]IntelliJ IDEA 自定义方法注解模板
    [转]Intellij Idea自动添加注释的方法
    C++中substr的用法
    C++中find()函数和rfind()函数的用法
    无符号类型
    标准库string与C风格字符串
    vector对象
    string 类(二)
    string类
  • 原文地址:https://www.cnblogs.com/gzz2016/p/5484678.html
Copyright © 2011-2022 走看看