AppDelegate 内的方法在APP生命周期触发的时机和顺序

首先介绍一下各个方法触发的时机
- ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions {
   
// Override point for customization after application launch.
   DebugLog(@"程序载入完成后执行");
//launchOptions 这个参数使用来表示app启动方式的
//如果launchOptions为nil 则表示用户通过点击App图标正常启动的
   
return YES ;
}

-(
void )applicationDidReceiveMemoryWarning:( UIApplication *)application{
   
DebugLog ( @" 系统内存不足 , 需要清理工作 " );

}
- (
void )applicationWillResignActive:( UIApplication *)application {
   
DebugLog ( @“ 程序即将进入非活动状态的时候执行此方法 , 即后台运行 );
/*
此方法执行的时机:
    1)在单击Home键后,APP即将进入后台时,执行此方法
    2)在下拉通知栏,或上拉工具栏时,执行此方法
    3)双击Home键,切换任务栏时会执行此方法
    4)应用间切换
*/
}


- (
void )applicationDidEnterBackground:( UIApplication *)application {
   
DebugLog ( @" 如果程序支持后台运行 , 则后台已进入后台运行 " ); // 如果需要退出后台 , 则加入 exit(0)
/*
此方法执行的时机:
    1)在APP真正进入后台后,会触发该方法,通过单击Home键触发进入后台才会执行
    2)应用间切换

*/

}


- (
void )applicationWillEnterForeground:( UIApplication *)application {
   
DebugLog ( @" 程序即将进入活动状态 , 即在进入前台之前 " );
/*
此方法执行的时机:
    1)在APP真正从后台进入前台,会触发该方法,通过单击Home键触发进入后台,再进入前台后才会执行
    2)应用间切换
*/
}


- (
void )applicationDidBecomeActive:( UIApplication *)application {
   
DebugLog ( @" 程序已进入活跃状态 , 即进入前台 );
/*
此方法执行的时机:
    1)在单击Home键后,APP即将进入后台再进前台时,执行此方法
    2)在下拉通知栏,或上拉工具栏时,执行此方法
    3)双击Home键,切换任务栏时会执行此方法
    4)应用间切换
    6)在每次APP启动的时候,在执行完didFinishLaunchingWithOptions 后执行

*/
}


- (
void )applicationWillTerminate:( UIApplication *)application {
   
DebugLog ( @" 程序即将退出 , 用于保存数据和清理工作 " );
/*
此方法执行的时机:是在程序彻底退出时执行此方法,如双击home键杀死、系统因内存不足杀掉该程序进程

*/

}
-(
void )applicationSignificantTimeChange:( UIApplication *)application{

   
DebugLog ( @" 系统时间发生改变的时候 " );


}
-(
void )application:( UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:( NSData *)deviceToken{
   
// 推送消息时获取设备的 tokenID

}
- (
void )application:( UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:( nonnull NSError *)error{
   
//deviceToken 获取失败时做相应处理

}
-(
void )application:( UIApplication *)application didReceiveRemoteNotification:( nonnull NSDictionary *)userInfo{
// 接收到推送消息

}
为了便于理解,我把APP后后台状态分为两类:
       1)单击Home键,或者从此APP通过连接或者推送通知跳转其他APP时,此APP只要没被系统杀掉进程,此时就处于后台运行的状态。四个方法都会按顺序触发: applicationWillResignActive —-
applicationDidEnterBackground——applicationWillEnterForeground—applicationDidBecomeActive(从前台切后台再到前台执行的顺序)
    2)我把下拉通知栏,消息、短信的推送通知,上拉工具栏,双击home键切换任务栏看做一类,此类动作会导致APP进入一个区别于真正切入后台的状态,为了方便理解我称它为伪后台状态。此类状态在与前台状态切换时,只会触发applicationWillResignActive:和applicationDidBecomeActive两个方法.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值