打开AppDelegate.m
文件,里面有下面几个方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application
那么它们什么时候执行呢?执行的顺序又是什么?
当我们打开应用时,首先调用的方法是:
其中,didFinishLaunchingWithOptions
当应用开启时调用,applicationDidBecomeActive
是应用激活时调用。
当我们在模拟器上按Home键时,调用的方法如下:
其中,applicationWillResignActive
在即将退出应用时调用,applicationDidEnterBackground
在推出应用(即应用进入后台时)调用。
当我们点击应用图标再一次进入应用时,调用的方法如下:
其中,applicationWillEnterForeground
在将要打开应用时调用,applicationDidBecomeActive
在已经打开应用时调用。
注意:didFinishLaunchingWithOptions
方法一般是应用加载时调用的,如果应用还在内存中,那么应用退出再进入是不会调用该方法的。
下面的代码可以比较相似地模拟QQ设定手势密码的流程:
“`
@implementation AppDelegate
int flag=0;
(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSUserDefaults* users=[NSUserDefaults standardUserDefaults];
if ([users boolForKey:@”password_notneed”]) {
self.window.rootViewController=[[SStabBarController alloc] init];
}else{
self.window.rootViewController=[[SSpassController alloc] init];
flag=1;}
[self.window makeKeyAndVisible];
return YES;
}(void)applicationWillResignActive:(UIApplication *)application {
}(void)applicationDidEnterBackground:(UIApplication *)application {
flag=0;
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
}
(void)applicationDidBecomeActive:(UIApplication *)application {
NSUserDefaults* users=[NSUserDefaults standardUserDefaults];
bool need=[users boolForKey:@”password_notneed”];if (flag==0&&!need) {
self.window.rootViewController=[[SSpassController alloc] init];
}
}(void)applicationWillTerminate:(UIApplication *)application {
}“`