iOS向后台申请一段时间

今天在整理项目的时候看到这样一个问题:如何在app进入后台处理事件.也就是说,如何在app按home退出前台后向系统申请一段时间.点击home退出app会经历以下阶段:

(1) Active->Inactive 调用 applicationWillResignActive: 方法,app从前台活动状态进入非运行状态

(2) Inactive->Background 应用从非活动状态进入后台状态

(3) Background->Suspended 调用 applicationDidEnterBackground: 方法,app从后台状态进入挂起状态

(4) Suspended->Not running 调用 applicationWillTerminate: 方法,app被系统终止

在应用未进入挂起状态前,都可以进行后台时间的申请,调用方法可以像我这样在AppDelegate中写:

 1 @interface AppDelegate ()
 2 {
 3     UIBackgroundTaskIdentifier _backgroundTaskIdentifier;
 4 }
 5 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 6     _backgroundTaskIdentifier = UIBackgroundTaskInvalid;
 7     return YES;
 8 }
 9 - (void)applicationWillResignActive:(UIApplication *)application {
10     if (_backgroundTaskIdentifier == UIBackgroundTaskInvalid)
11     {
12         _backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void)
13                                      {
14                                          dispatch_async(dispatch_get_main_queue(), ^
15                                                         {
16                                                             [application endBackgroundTask:_backgroundTaskIdentifier];
17                                                             _backgroundTaskIdentifier = UIBackgroundTaskInvalid;20                                                         });
21                                      }];
22     }
23 }

当然,可以在后台任务完成后主动结束后台运行来节省系统资源与减少耗电量

在完成后台任务后可以调用下面的方法提前结束后台运行:

1 if (_backgroundTaskIdentifier != UIBackgroundTaskInvalid)
2     {
3         [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier];
4         _backgroundTaskIdentifier = UIBackgroundTaskInvalid;
5     }

 

转载于:https://www.cnblogs.com/simengnanni/p/7825174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值