iOS 在viewController中监听Home键触发以及重新进入界面的方法
创建2个NSNotificationCenter监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil]; //监听是否触发home键挂起程序. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; //监听是否重新进入程序程序.
第二步:
实现2个NSNotificationCenter所触发的事件方法
- (void)applicationWillResignActive:(NSNotification *)notification { printf("按理说是触发home按下\n"); } - (void)applicationDidBecomeActive:(NSNotification *)notification { printf("按理说是重新进来后响应\n"); }
注: 在home键触发后,AppDelegate响应的方法为:
- (void)applicationDidEnterBackground:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers,
and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. */ }
一、挂起
当有电话进来或者锁屏,这时你的应用程会挂起,在这时,UIApplicationDelegate委托会收到通知,调用 applicationWillResignAct
ive 方法,你可以重写这个方法,做挂起前的工作,比如关闭网络,保存数据。 当你的程序被挂起后他不会在后台运行。
二、复原
当程序复原时,另一个名为 applicationDidBecomeActi
ve 委托方法会被调用,在此你可以通过之前挂起前保存的数据来恢复你的应用程序: 注意:应用程序在启动时,在调用了 applicationDidFinishLaun
ching 方法之后也会调用 applicationDidBecomeActi ve 方法,所以你要确保你的代码能够分清复原与启动,避免出现逻辑上的bug。
三、终止
当用户按下按钮,或者关机,程序都会被终止。当一个程序将要正常终止时会调用 applicationWillTerminate
方法。但是如果长主按钮强制退出,则不会调用该方法。这个方法该执行剩下的清理工作,比如所有的连接都能正常关闭,并在程序退出前执行任何其他的必要的工作: 来源:
http://blog.youkuaiyun.com/iukey/article/details/7311115
Java代码程序开始 !"); return YES; } - (void)applicationWillResignAct ive:(UIApplication *)application { NSLog(@"\n ===> 程序暂行 !"); } - (void)applicationDidEnterBackg round:(UIApplication *)application { NSLog(@"\n ===> 程序进入后台 !"); } - (void)applicationWillEnterFore ground:(UIApplication *)application { NSLog(@"\n ===> 程序进入前台 !"); } - (void)applicationDidBecomeActi ve:(UIApplication *)application { NSLog(@"\n ===> 程序重新激活 !"); } - (void)applicationWillTerminate :(UIApplication *)application { NSLog(@"\n ===> 程序意外暂行 !"); UIDevice *device = [UIDevice currentDevice]; }" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> ![]()
- -
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOp tions:(NSDictionary *)launchOptions - {
// Override point for customization after application launch. NSLog(@"\n ===> 程序开始 !"); return YES; - }
- -
(void)applicationWillResignAct ive:(UIApplication *)application - {
NSLog(@"\n ===> 程序暂行 !"); - }
- -
(void)applicationDidEnterBackg round:(UIApplication *)application - {
NSLog(@"\n ===> 程序进入后台 !"); - }
- -
(void)applicationWillEnterFore ground:(UIApplication *)application - {
NSLog(@"\n ===> 程序进入前台 !"); - }
- -
(void)applicationDidBecomeActi ve:(UIApplication *)application - {
NSLog(@"\n ===> 程序重新激活 !"); - }
- -
(void)applicationWillTerminate :(UIApplication *)application - {
NSLog(@"\n ===> 程序意外暂行 !"); UIDevice *device = [UIDevice currentDevice]; - }
首次运行:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp
tions:(NSDictionary *)launchOptions - (void)applicationDidBecomeActi
ve:(UIApplication *)application
首次关闭(home):
- (void)applicationWillResignAct
ive:(UIApplication *)application - (void)applicationDidEnterBackg
round:(UIApplication *)application
再次运行:
- (void)applicationWillEnterFore
ground:(UIApplication *)application - (void)applicationDidBecomeActi
ve:(UIApplication *)application
再次关闭:
- (void)applicationWillResignAct
ive:(UIApplication *)application - (void)applicationDidEnterBackg
round:(UIApplication *)application