iOS应用的生命周期

578 阅读1分钟

1.UIApplicationState

应用的三个状态

typedef NS_ENUM(NSInteger, UIApplicationState) {
    UIApplicationStateActive,
    // 应用在前台,却不响应事件,发生在前后台切换时候、有电话进来等场景
    UIApplicationStateInactive,
    UIApplicationStateBackground
};

1.冷起

// 1.
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;
// 2.初始化window,设置rootViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;
// 3.
- (void)applicationDidBecomeActive:(UIApplication *)application;

2.进入后台

‘’‘ // 1.

  • (void)applicationWillResignActive:(UIApplication *)application; // 2.
  • (void)applicationDidEnterBackground:(UIApplication *)application; ’‘’

3.热启

// 1.
- (void)applicationWillEnterForeground:(UIApplication *)application;
// 2.
- (void)applicationDidBecomeActive:(UIApplication *)application;

4.通过URLScheme打开

/*
* url:Scheme,里面有其他App传递过来的参数
* 从iOS9.0以后(例如iOS9.1)开始支持
**/
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;
/*
* 仅iOS9.0以前(例如iOS8)支持。iOS9及iOS9以后(例如iOS9.1)已经废弃。
**/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation

5.通过Spotlight/Universal Link打开

/*
* userActivity:activityType为NSUserActivityTypeBrowsingWeb,代表是通过Universal Link打开的
**/
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler;

2.UIViewController

1.A push B

// 1.B
- (void)viewDidLoad;
// 2.A
- (void)viewWillDisappear:(BOOL)animated;
// 3.B
- (void)viewWillAppear:(BOOL)animated;
// 4.A
- (void)viewDidDisappear:(BOOL)animated;
// 5.B
- (void)viewDidAppear:(BOOL)animated;

2.A present B

// 1.B
- (void)viewDidLoad;
// 2.A
- (void)viewWillDisappear:(BOOL)animated;
// 3.B
- (void)viewWillAppear:(BOOL)animated;
// 4.B
- (void)viewDidAppear:(BOOL)animated;
// 5.A
- (void)viewDidDisappear:(BOOL)animated;