IOS应用生命周期
分为以下5种状态:
- Not running(非运行状态)
- 应用程序没有运行或被系统终止
- Inactive(前台非活动状态)
- 正在进入前台状态但是不能接受事件处理
- Active(前台活动状态)
- 进入前台,能接受事件处理
- Background(后台状态)
- 如果有可执行的代码则执行代码,没有或执行完毕则马上进入挂起状态。
- Suspended(挂起状态)
- 冷冻状态,不能执行代码。如果系统内存不够,应用被终止。
AppDelegate中状态跃迁的应用回调方法:
// 应用程序启动并进行初始化调用该方法发出通知
// 实例化根视图控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%@", @"application: didFinishLaunchingWithOptions:");
return YES;
}
// 从活动状态进入非活动状态调用该方法。
// 此状态可以保存UI的状态
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%@", @"applicationWillResignActive");
}
// 应用程序进入后台调用该方法并发出通知
// 保存用户数据,释放一些资源(例如释放数据库资源)
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"%@", @"applicationDidEnterBackground");
}
// 进入前台但还没有处于活动状态时调用该方法并发出通知
// 此阶段恢复用户数据
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"%@", @"applicationWillEnterForeground");
}
// 进入前台并处于活动状态时调用该方法并发出通知。
// 此阶段可恢复UI的状态
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"%@", @"applicationDidBecomeActive");
}
// 应用程序被终止调用该方法(内存清除时除外)
// 该阶段释放资源保存用户数据
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"%@", @"applicationWillTerminate");
}
状态场景:
-
1. 非运行状态—应用启动场景
-
2. 点击Home键—应用退出场景
该场景状态跃迁可分为两种情况,根据Info.plist中的属性设置Application does not run in background
控制相应的状态:
-
应用程序在后台运行或挂起
-
应用程序不可以在后台运行或挂起:
- 3. 挂起重新运行场景
- 4. 内存清除:应用终止场景
内存清除有两种情况:可能是系统强制清理内存,也可能是使用者从任务栏中手动清除。清除后再次运行应用程序上一次状态不会保存。