AppDelegate為整個(gè)應(yīng)用的一個(gè)代理,提供程序啟動(dòng)、退出等類似監(jiān)控的接口。
IOS AppDelegate方法全解
1.當(dāng)應(yīng)用程序?qū)⒁M(jìn)入非活動(dòng)狀態(tài)執(zhí)行,在此期間,應(yīng)用程序不接受消息或事件,比如來電
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"應(yīng)用程序?qū)⒁M(jìn)入非活動(dòng)狀態(tài),即將進(jìn)入后臺(tái)");
}
2.應(yīng)用程序已經(jīng)進(jìn)入后臺(tái)運(yùn)行
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"如果應(yīng)用程序支持后臺(tái)運(yùn)行,則應(yīng)用程序已經(jīng)進(jìn)入后臺(tái)運(yùn)行"); //如果需要退出后臺(tái),則在這里加上:exit(0);
}
3.應(yīng)用程序?qū)⒁M(jìn)入活動(dòng)狀態(tài)執(zhí)行
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog(@"應(yīng)用程序?qū)⒁M(jìn)入活動(dòng)狀態(tài),即將進(jìn)入前臺(tái)運(yùn)行");
}
4.應(yīng)用程序已經(jīng)進(jìn)入活動(dòng)狀態(tài)
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"應(yīng)用程序已進(jìn)入前臺(tái),處于活動(dòng)狀態(tài)");
}
5.應(yīng)用程序?qū)⒁顺?,通常用于保存?shù)據(jù)和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application
{
NSLog(@"應(yīng)用程序?qū)⒁顺觯ǔS糜诒4鏀?shù)據(jù)和一些退出前的清理工作");
}
6.當(dāng)設(shè)備為應(yīng)用程序分配了太多的內(nèi)存,操作系統(tǒng)會(huì)終止應(yīng)用程序的運(yùn)行,在終止前會(huì)執(zhí)行這個(gè)方法,通常可以在這里進(jìn)行內(nèi)存清理工作,防止程序被終止
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
NSLog(@"系統(tǒng)內(nèi)存不足,需要進(jìn)行清理工作");
}
7.當(dāng)系統(tǒng)時(shí)間發(fā)生改變時(shí)執(zhí)行
-(void)applicationSignificantTimeChange:(UIApplication *)application
{
NSLog(@"當(dāng)系統(tǒng)時(shí)間發(fā)生改變時(shí)執(zhí)行");
}
8.推送消息時(shí),獲取設(shè)備的tokenid
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@",deviceToken);
}
9.tokenid獲取失敗時(shí),做相應(yīng)處理
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"fail to register for remoteNotifications: %@", [err description]);
}
10.接收到推送消息處理
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
//設(shè)置icon上的標(biāo)記數(shù)字設(shè)置為0;
//application.applicationIconBadgeNumber = 0;
NSLog(@"%@",userInfo);
}
11.當(dāng)程序載入后執(zhí)行
-(void)applicationDidFinishLaunching:(UIApplication *)application
{
NSLog(@"當(dāng)程序載入后執(zhí)行");
}
系統(tǒng)啟動(dòng)代理
//創(chuàng)建UIWindos
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//初始化應(yīng)用系統(tǒng)需要顯示的第一個(gè)頁面
ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
//配置window窗口的rootViewController實(shí)例
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
return YES;
@implementation AppDelegate
/**
* app啟動(dòng)完畢后就會(huì)調(diào)用
* 在啟動(dòng)圖標(biāo)消失后進(jìn)入該方法,并且程序進(jìn)入后臺(tái)后,再次進(jìn)入時(shí)不再調(diào)用
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"程序已經(jīng)啟動(dòng)...");
return YES;
}
/**
* 程序失去焦點(diǎn)后執(zhí)行,一般數(shù)據(jù)保存操作在這里執(zhí)行
*/
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"程序?qū)⒁ソ裹c(diǎn)...");
}
/**
* app進(jìn)入后臺(tái)的時(shí)候調(diào)用 注意:進(jìn)入后臺(tái)時(shí)先失去焦點(diǎn)再進(jìn)入后臺(tái)
*/
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"程序已經(jīng)進(jìn)入后臺(tái)...");
}
/**
* app進(jìn)入前臺(tái)的時(shí)候調(diào)用
*/
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"程序?qū)⒁M(jìn)入前臺(tái)...");
}
/**
* 程序被激活(獲得焦點(diǎn))后執(zhí)行 注意:先進(jìn)入前臺(tái)再獲取焦點(diǎn)<span style="font-family: Arial, Helvetica, sans-serif;">,一般數(shù)據(jù)恢復(fù)操作在這里執(zhí)行</span>
*/
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"程序已經(jīng)獲得焦點(diǎn)...");
}
/**
* 程序終止時(shí)執(zhí)行
*/
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"程序?qū)⒁K止...");
}
/**
* 清除不需要再使用的內(nèi)存
*/
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
NSLog(@"applicationDidReceiveMemoryWarning");
}
@end