AppDelegate中的各种状态更改通知

 每个委托方法仅在一种状态中调用(每个通知也仅在一种状态中出现)
     这些委托方法和通知都直接与某种“运行”状态相关:活动、不活动 和 后台。
          UIApplicationDidFinishLaunchingNotification (通知名称) ---> application:didFinishLaunchingWithOptions:(委托方法):在应用程序启动后直接进行应用程序级编码的主要方式。

        UIApplicationWillResignActiveNotification(通知名称)--->applicationWillResignActive:(委托方法):用户按下主屏幕按钮调用 ,不要在此方法中假设将进入后台状态,只是一种临时变化,最终将恢复到活动状态

      UIApplicationDidBecomActiveNotification(通知名称) ---->applicationDidBecomeActive:(委托方法):应用程序按下主屏幕按钮后想要将应用程序切换到前台时调用,应用程序启动时也会调用,可以在其中添加一些应用程序初始化代码

     applicationWillResignActive:和applicationDidBecomeActive:这两个方法代表着应用程序从活动状态过度到不活动状态,是启用或禁用任何动画、应用程序那的音频或其他处理应用程序表示(向用户)的项目的不错位置。

      UIApplicationDidEnterBackgroundNotification(通知名称)----->applicationDidEnterBackground:(委托方法):应用程序在此方法中释放所有可在以后重新创建的资源,保存所有用户数据,关闭网络连接等。如果需要,也可以在这里请求在后台运行更长时间。如果在这里花费了太长时间(超过5秒),系统将断定应用程序的行为异常并终止他。

     UIApplicationWillEnterForegroundNotification(通知名称) ---->applicationWillEnterForeground:(委托方法):当应用程序在applicationDidEnterBackground:花费了太长时间,终止后,应该实现此方法来重新创建在applicationDidEnterBackground中销毁的内容,比如重新加载用户数据、重新建立网络连接等。

     请注意,当巧用applicationDidEnterBackground:时,可以安全地假设最近也调用了applicationWillResignActive

     UIApplicationWllTerminateNotification(通知名称) ----> applicationWillTerminate:(委托方法):现在很少使用,只有在应用程序已进入后台,并且系统出于某种原因决定跳过暂停状态并终止应用程序时,才会真正调用它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 `AppDelegate` 也可以使用 `UINavigationController` 进行页面的跳转,但是这不是一个好的编程实践,因为 `AppDelegate` 主要负责应用程序的生命周期和应用级别的事件处理,不应该直接处理视图控制器的跳转逻辑。 如果需要在 `AppDelegate` 进行页面跳转,可以通过获取 `UIWindow` 的 `rootViewController` 属性来获取当前的根视图控制器,然后进行跳转。例如: ```objective-c - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 创建 UIWindow 实例 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 创建根视图控制器 UIViewController *rootViewController = [[UIViewController alloc] init]; rootViewController.view.backgroundColor = [UIColor whiteColor]; // 创建 UINavigationController 实例,并设置根视图控制器 UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; // 将 UINavigationController 实例设置为 UIWindow 的根视图控制器 self.window.rootViewController = navigationController; // 显示窗口 [self.window makeKeyAndVisible]; // 在需要的地方进行页面跳转 UIViewController *targetViewController = [[UIViewController alloc] init]; [navigationController pushViewController:targetViewController animated:YES]; return YES; } ``` 这样做虽然可以实现页面的跳转,但是建议还是在视图控制器进行页面跳转,这样代码更加清晰,也符合 MVC 设计模式的思想。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值