UIApplication - 03Delegate和生命周期

  • 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获取焦点"时,将游戏数据进行恢复。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容