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
的,只有当应用被系统杀死的时候才会调用这个方法。
以上就是应用的完整生命周期。