美文网首页
UIApplication - 03Delegate和生命周期

UIApplication - 03Delegate和生命周期

作者: js_huh | 来源:发表于2020-08-09 14:32 被阅读0次
  • UIApplication设置代理属性
    @property(nullable, nonatomic, assign) id<UIApplicationDelegate> delegate;

  • UIApplicationDelegate 对象是谁?

    • AppDelegate.h 遵循了代理协议UIApplicationDelegate
      @interface AppDelegate : UIResponder <UIApplicationDelegate>
    • AppDelegate.m实现了代理方法。
  • AppDelegate做什么用?

    • 处理应用程序的生命周期事件(如程序启动和关闭)
    • 处理系统事件(如来电)
    • 处理内存警告
    • ....

  • AppDelegate实现了协议,App生命周期的一些方法.
    - application: didFinishLaunchingWithOptions: - 应用程序启动完成的时候调用
    - applicationWillResignActive: - 当我们应用程序即将失去焦点的时候调用
    - applicationDidEnterBackground: - 当我们应用程序完全进入后台的时候调用
    - applicationWillEnterForeground: -当我们应用程序即将进入前台的时候调用
    - applicationDidBecomeActive: - 当我们应用程序完全获取焦点的时候调用, 只有当一个应用程序完全获取到焦点,才能与用户交互.
    - applicationWillTerminate: - 当我们应用程序即将关闭的时候调用
    - applicationDidReceiveMemoryWarning: - 当应用程序收到内存警告时调用
    
  • 方法的调用顺序
    • App刚启动时
      • didFinishLaunchingWithOptions - App启动完毕
      • applicationDidBecomeActive - App获取焦点(我能够和用户进行交互了)
    • 退出App, 进入后台时(CMD + shift + h)
      • applicationWillResignActive- 即将失去焦点
      • applicationDidEnterBackground- 进入后台
    • 再次点击App
      注意: 此时的App已在后台,并不是重新打开一个全新的App。
      • applicationWillEnterForeground - 即将进入前台
      • applicationDidBecomeActive - App获取焦点
    • 真正退出App (CMD + shift + h + h)
      • applicationWillResignActive - 即将失去焦点
      • applicationDidEnterBackground - 进入后台
      • applicationWillTerminate - App即将关闭
    • 收到内存警告时 (2次警告,第3次直接崩系统)
      • applicationDidReceiveMemoryWarning - 内存警告

  • 移动操作系统有个缺点,App很容易受到干扰。
    比如: 玩游戏的过程中,一个电话打进来。接完电话, 回过头玩游戏,需要从头开始。
    • 解决思路:
    • "退出App,进入后台"时,对游戏数据进行保存.
    • 打完电话,再次点击游戏时,也就是"即将进入前台 ,App获取焦点"时,将游戏数据进行恢复。

相关文章

网友评论

      本文标题:UIApplication - 03Delegate和生命周期

      本文链接:https://www.haomeiwen.com/subject/fahwrktx.html