一、应用程序的状态
- Not running 未运行
程序没有启动 - Inactive 未激活
程序在前台运行,没有接收到事件。在没有事件处理情况下程序通常停留在这个状态 - Active 激活
程序前台运行而且接收到事件。 - Background 后台
程序在后台且能执行代码。大多数程序进入这个状态会在这个状态停留一会,时间到了之后就会进入挂起状态(Suspended)。程序也可以经过特殊请求长期处于Background状态。 - Suspended 挂起
程序在后台不执行代码。系统会自动把程序变为这个状态且不会发出通知,当程序挂起时,程序还是停留在内存中,当内存低时,系统就把挂起的程序清楚掉,为前台程序提供更多的内存。
各种回调状态代理:
- 应用程序启动,告诉代理进程启动但还没有进入状态保存
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions {
NSLog(@"willFinishLaunchingWithOptions");
return YES;
}
- 启动基本完成程序准备开始运行。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"didFinishLaunchingWithOptions");
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"ViewController"];
UINavigationController *navi = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = navi;
return YES;
}
- APP将要进入非活动状态
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"APP将要进入非活动状态");
}
- APP进入活动状态
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"APP进入活动状态");
}
- APP进入后台
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"APP进入后台");
}
- APP从后台回到前台
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"APP从后台回到前台");
}
二、各种情况
-
程序运行
image.png -
应用退出到后台
image.png -
应用从后台进入到前台
image.png -
锁屏
image.png -
点亮屏幕
image.png -
滑下通知栏
image.png -
从通知栏回来
image.png
-
滑出设置栏
image.png
*从设置栏滑出
image.png
- 来电
- 挂断来电
参考资料:
1、https://www.jianshu.com/p/2dca46ea0c08
2、https://www.jianshu.com/p/6aa43a1be75f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
3、https://www.jianshu.com/p/fc675b077756
网友评论