博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS向后台申请一段时间
阅读量:6302 次
发布时间:2019-06-22

本文共 1810 字,大约阅读时间需要 6 分钟。

今天在整理项目的时候看到这样一个问题:如何在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

你可能感兴趣的文章
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
DHCP
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>
自动生成四则运算题目
查看>>
【翻译】使用新的Sencha Cmd 4命令app watch
查看>>
【前台】【单页跳转】整个项目实现单页面跳转,抛弃iframe
查看>>
因为你是前端程序员!
查看>>