ios之申请后台延时执行和做一个假后台的方法

ios之申请后台延时执行和做一个假后台的方法

ID:12190327

大小:19.53 KB

页数:6页

时间:2018-07-16

ios之申请后台延时执行和做一个假后台的方法_第1页
ios之申请后台延时执行和做一个假后台的方法_第2页
ios之申请后台延时执行和做一个假后台的方法_第3页
ios之申请后台延时执行和做一个假后台的方法_第4页
ios之申请后台延时执行和做一个假后台的方法_第5页
资源描述:

《ios之申请后台延时执行和做一个假后台的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ios之申请后台延时执行和做一个假后台的方法我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法。// 当应用程序掉到后台时,执行该方法-(void)applicationDidEnterBackground:(UIApplication *)application{   }我们已经知道:当一个 iOS 应用被送到后台,它的主线程会被暂停。你用 NSThread 的 detachNewThreadSelector:toTarget:withObject:类方法创建的线程也被挂起了。我

2、们假设有这么一种情况:当我们的应用程序从前台被送到了后台。这时候,我们的程序将执行委托方法 applicationDidEnterBackground。但是,这时候,应用程序只给了我们可怜的一点点时间(也就是秒级别的)来处理东西,然后,所有的线程都被挂起了。而实际中,我们可能需要更长的时间来完成我们的需要的必要操作:1.我们需要在应用程序推到后台时,能够有足够的时间来完成将数据保存到远程服务器的操作。2.有足够的时间记录一些需要的信息操作。怎么办?!因为我们需要的时间可能会有点长,而默认情况下,iOS没有

3、留给我们足够的时间。悲剧了……总需要有一个办法来解决~~~~向iOS申请,在后台完成一个Long-RunningTask任务当一个 iOS 应用被送到后台,它的主线程会被暂停。你用 NSThread 的 detachNewThreadSelector:toTarget:withObject:类方法创建的线程也被挂起了。如果你想在后台完成一个长期任务,就必须调用 UIApplication 的 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 借点时间

4、。默认情况下,如果在这个期限内,长期任务没有被完成,iOS 将终止程序。怎么办?可以使用 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 再借点时间。既然是借时间,那么就需要有一些约定俗成的方式。先贴代码吧:1.项目的AppDelegate.h文件中 声明一个 UIBackgroundTaskIdentifier ,相当于一个借据吧。告诉iOS,我们的程序将要借更多的时间来完成 Long-RunningTask 任务。 @property (non

5、atomic, unsafe_unretained) UIBackgroundTaskIdentifier backgroundTaskIdentifier;@property (nonatomic, strong) NSTimer *myTimer;2.项目的AppDelegate.m文件中 1.注意在applicationDidEnterBackground方法中,完成借据的流程 即:self. backgroundTaskIdentifier =[application beginBackgroun

6、dTaskWithExpirationHandler:^( void){     [self endBackgroundTask];   }];  // 当应用程序掉到后台时,执行该方法 // 当一个 iOS 应用被送到后台,它的主线程会被暂停。你用 NSThread 的 detachNewThreadSelector:toTarget:withObject:类方法创建的线程也被挂起了。// 如果你想在后台完成一个长期任务,就必须调用 UIApplication 的 beginBackgroundTask

7、WithExpirationHandler:实例方法,来向 iOS 借点时间。// 默认情况下,如果在这个期限内,长期任务没有被完成,iOS 将终止程序。// 怎么办?可以使用 beginBackgroundTaskWithExpirationHandler:实例方法,来向 iOS 再借点时间。-(void)applicationDidEnterBackground:(UIApplication *)application{   // 使用这个方法来释放公共的资源、存储用户数据、停止我们定义的定时器(ti

8、mers)、并且存储在程序终止前的相关信息。   // 如果,我们的应用程序提供了后台执行的方法,那么,在程序退出时,这个方法将代替applicationWillTerminate方法的执行。        // 标记一个长时间运行的后台任务将开始   // 通过调试,发现,iOS给了我们额外的10分钟(600s)来执行这个任务。   self.backgroundTaskIdentifier =[application be

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。