AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口。
IOS AppDelegate方法全解
1.当应用程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,比如来电
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"应用程序将要进入非活动状态,即将进入后台");
}
2.应用程序已经进入后台运行
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"如果应用程序支持后台运行,则应用程序已经进入后台运行"); //如果需要退出后台,则在这里加上:exit(0);
}
3.应用程序将要进入活动状态执行
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog(@"应用程序将要进入活动状态,即将进入前台运行");
}
4.应用程序已经进入活动状态
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"应用程序已进入前台,处于活动状态");
}
5.应用程序将要退出,通常用于保存数据和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application
{
NSLog(@"应用程序将要退出,通常用于保存数据和一些退出前的清理工作");
}
6.当设备为应用程序分配了太多的内存,操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作,防止程序被终止
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
NSLog(@"系统内存不足,需要进行清理工作");
}
7.当系统时间发生改变时执行
-(void)applicationSignificantTimeChange:(UIApplication *)application
{
NSLog(@"当系统时间发生改变时执行");
}
8.推送消息时,获取设备的tokenid
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@",deviceToken);
}
9.tokenid获取失败时,做相应处理
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"fail to register for remoteNotifications: %@", [err description]);
}
10.接收到推送消息处理
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
//设置icon上的标记数字设置为0;
//application.applicationIconBadgeNumber = 0;
NSLog(@"%@",userInfo);
}
11.当程序载入后执行
-(void)applicationDidFinishLaunching:(UIApplication *)application
{
NSLog(@"当程序载入后执行");
}
系统启动代理
//创建UIWindos
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//初始化应用系统需要显示的第一个页面
ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
//配置window窗口的rootViewController实例
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
return YES;
@implementation AppDelegate
/**
* app启动完毕后就会调用
* 在启动图标消失后进入该方法,并且程序进入后台后,再次进入时不再调用
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"程序已经启动...");
return YES;
}
/**
* 程序失去焦点后执行,一般数据保存操作在这里执行
*/
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"程序将要失去焦点...");
}
/**
* app进入后台的时候调用 注意:进入后台时先失去焦点再进入后台
*/
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"程序已经进入后台...");
}
/**
* app进入前台的时候调用
*/
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"程序将要进入前台...");
}
/**
* 程序被激活(获得焦点)后执行 注意:先进入前台再获取焦点<span style="font-family: Arial, Helvetica, sans-serif;">,一般数据恢复操作在这里执行</span>
*/
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"程序已经获得焦点...");
}
/**
* 程序终止时执行
*/
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"程序将要终止...");
}
/**
* 清除不需要再使用的内存
*/
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
NSLog(@"applicationDidReceiveMemoryWarning");
}
@end