iOS DeveloperiOS 开发

iOS开发基础-应用生命周期

2016-05-03  本文已影响160人  for_in

废话不说,直接上示例代码,新建一个工程,模版选用Single View Application,不要勾选Core Data,然后打开AppDelegate.m文件,去除所有方法内的注释,最后在每个方法里添加以下代码NSLog(@"%@", NSStringFromSelector(_cmd));

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"%@", NSStringFromSelector(_cmd));
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)applicationWillTerminate:(UIApplication *)application {
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

@end

编译运行代码,你就会在Xcode控制台看到以下输出:

2016-05-03 17:55:44.455 Test[2313:753117] application:didFinishLaunchingWithOptions:
2016-05-03 17:55:44.470 Test[2313:753117] applicationDidBecomeActive:

然后按下Home键又会获得以下输出:

2016-05-03 18:04:13.569 Test[2313:753117] applicationWillResignActive:
2016-05-03 18:04:14.268 Test[2313:753117] applicationDidEnterBackground:

再次点击应用图标,重新进入应用,获得以下输出:

2016-05-03 18:11:55.424 Test[2313:753117] applicationWillEnterForeground:
2016-05-03 18:11:55.884 Test[2313:753117] applicationDidBecomeActive:

这个时候用另一个设备给这个设备发送一条消息,当设备收到推送通知的时候会得到以下输出:

2016-05-03 18:14:13.669 Test[2313:753117] applicationWillResignActive:

在弹出的通知横幅处向上滑动,让横幅消失,这时会得到以下输出:

2016-05-03 18:21:35.814 Test[2313:753117] applicationDidBecomeActive:

双击Home键,向上滑动应用,杀掉应用,这个时候控制台没有任何输出,因为你直接杀死应用是不会调用applicationWillTerminate的,只有当应用被系统杀死的时候才会调用这个方法。

以上就是应用的完整生命周期。

上一篇 下一篇

猜你喜欢

热点阅读