ios实现程序切入后台,实现后台任务
首先,iOS 会再持续切入后台,给我们5秒钟的时间去处理相关数据,5秒后,程序不会再执行任何代码,处于挂起状态。 // 项目需求,按下Home切换后台后向服务器传一些数据,废话不多说,直接上代码
/**
* 申请后台任务
*/
- (void)beginBackgroundTask
{
_bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundTask];
}];
}
/**
* 结束后台任务
*/
- (void)endBackgroundTask
{
dispatch_async(dispatch_get_main_queue(), ^(void){
// 标记指定的后台任务完成
[[UIApplication sharedApplication] endBackgroundTask: _bgTask];
// 销毁后台任务标识符
_bgTask = UIBackgroundTaskInvalid;
});
}
/**
* 后台运行
*/
- (void)backgroundTask
{
[self beginBackgroundTask];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"starting run background task in multi-thread:%@, remain time:%f", [NSThread currentThread],[UIApplication sharedApplication].backgroundTimeRemaining);
//执行你的任务或者网络请求,执行完后可以提前调用endBackgroundTask结束后台任务。
});
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self backgroundTask];
}
备注:IOS7测试 只可以申请180S时间来执行后台操作,而且有个奇怪的问题,就是执行完后App有时候会挂起,下次在启动的时候直接进入主页面,不会弹出Launch image页面。然后我试着把endBackgroundTask的内容注释后,下次启动就会弹出Launch image页面。按道理来说一般10分钟后系统会Kill掉App,10分钟后启动就会启动Launch image页面,但是实际有时候一个小时或者更长时间重新启动都不会弹出Launch image页面。如果有高手看到可以帮忙解答一下。。我目前的做法是只申请不结束。也就是不执行endBackgroundTask。
ios实现程序切入后台,实现后台任务的更多相关文章
- ios实现程序切入后台,实现后台任务 (转自)
,项目需求,是程序home键切入后台,3分钟后退出登陆, 首先,iOS 会再持续切入后台,给我们5秒钟的时间去处理相关数据,5秒后,程序不会再执行任何代码,处于挂起状态. - (void)applic ...
- 原创翻译:iOS 应用程序 蓝牙后台运行
默认情况下,普通的CoreBluetooth 任务中的大多数,无论是Central还是peripheral ,在后台或者挂起状况下都是无法进行的.也就是说,你可以通过宣布你的应用程序支持后台处理模式来 ...
- ios开发-程序压后台后,悄悄的抓取数据~~
我们使用某个app的时候,当我们将程序压到后台之后,我们希望它还能从服务器抓取一些数据,类似微博,微信,qq这些程序压后台 之后,我们依然能看到icon上显示未读数量.但是ios系统是伪多任务操作系统 ...
- iOS后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务
我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法. // 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UI ...
- 【iOS系列】-程序开启后台运行
[iOS系列]-程序开启后台运行 iOS程序是伪后台的运行,可是有时候我们需要让其在后台也要进行一些操作,我们可以让其伪装成音乐的APP,这样就可以让程序后台进行相关操作了,具体做法如下: 1:在Ap ...
- IOS 后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务
我们知道,到我们程序从前台退到后台(安home)键后,将执行程序的委托方法. // 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UI ...
- iOS开发小技巧--iOS程序进入后台运行的实现
iOS程序进入后台运行的实现 视频中看到老师用的iOS7,代码中有开启timer,无限请求数据的功能,但是切换到后台,代码就不打印了 自己用的iOS9,进入后台还是可以打印的,再次进入前台也可以正常运 ...
- iOS程序进入后台后仍运行定时器NSTimer
由于本应用需要在应用进入后台后还要进行定时的检测功能,因此对于我来说怎样让APP在进入后台后 保持运行状态是比较大的需求.然后在iOS系统中是很难实现的,不管是 通过 音频还是 定位系统,我查找了一些 ...
- iOS程序进入后台,延迟指定时间退出
程序进入后台,延迟指定时间退出 正常程序退出后,会在几秒内停止工作:要想申请更长的时间,需要用到beginBackgroundTaskWithExpirationHandlerendBackgroun ...
随机推荐
- Window vagrant 安装部署【转】
回想以前,想要安装个虚拟机是多么的麻烦.先要费尽心机找到想要的操作系统镜像文件,然后安装虚拟化软件,按照其提供的GUI界面操作一步步创建,整个过程费时费力.但是,自从使用了Vagrant以后,咱腰不酸 ...
- qwtplot3D安装及运行-----终结解决方案
..\qwtplot3d\include\qwt3d_openglhelper.h:67: 错误:'gluErrorString' was not declared in this scope..\q ...
- Sass函数--颜色函数--RGB颜色函数
RGB颜色函数-RGB()颜色函数 主要分为 RGB , HSL 和 Opacity 三大函数,当然其还包括一些其他的颜色函数,比如说 adjust-color 和 change-color 等.1. ...
- EF加载实体的方式
原文:Loading Related Entities EF加载数据的方式: 预加载 eager loading 延迟加载 lazy loading 显示加载 explicit loading 预先加 ...
- Eclipse搭建Android开发环境(安装ADT,Android4.4.2)(转)
使用Eclipse做Android开发,需要先在Eclipse上安装ADT(Android Development Tools)插件. 1.安装JDK 1.7 JDK官网http://www.orac ...
- Oracle decode函数 除数为零
decode (expression, search_1, result_1)如果 expression结果=search_1结果,则返回result_1,类似 if elsedecode (expr ...
- WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法
转自:http://blog.csdn.net/lploveme/article/details/8215265 在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Micro ...
- WCF入门教程系列四
一.概述 配置也是WCF编程中的主要组成部分.在 以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址. 服务 ...
- apache 反向代理配置(ubuntu)
1.配置apache2的站点文件 cd /etc/apache2/site-avaliable sudo vim edy.conf 具体配置如下: # 反向代理配置 # 监听所有80端口的访问 < ...
- 2 读取solr下的索引文件(lucene文件)
import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnaly ...