我后来是这么解决不知道行不行,能够长期的在后台执行
首先我在xx-info.plist 里的 "Required background modes" 里增加"App provides Voice over IP services"
然后在delegate里增加下面代码,原理是进入后台时程序会在600秒那样结束任务,我做的就是在结束任务前新开一个任务。再结束旧任务,这样就一直的在后台执行,希望可能帮助到很多其它的人。我也查了非常久才找到这种方法的。
UIBackgroundTaskIdentifier
backgroundTaskIdentifier; |
02 |
UIBackgroundTaskIdentifier
oldBackgroundTaskIdentifier; |
04 |
-
(BOOL) isMultitaskingSupported{ |
08 |
if ([[UIDevice
currentDevice] |
10 |
respondsToSelector:@selector(isMultitaskingSupported)]){
result = [[UIDevice currentDevice] isMultitaskingSupported]; |
18 |
-
( void )
timerMethod:(NSTimer *)paramSender{ |
20 |
if (count
% 500 == 0) { |
21 |
UIApplication
*application = [UIApplication sharedApplication]; |
25 |
backgroundTaskIdentifier
= [application beginBackgroundTaskWithExpirationHandler:^{ |
29 |
[application
endBackgroundTask:backgroundTaskIdentifier]; |
30 |
oldBackgroundTaskIdentifier
= backgroundTaskIdentifier; |
34 |
-
( void )applicationDidEnterBackground:(UIApplication
*)application |
36 |
if ([self
isMultitaskingSupported] == NO){ |
41 |
backgroundTaskIdentifier
= [application beginBackgroundTaskWithExpirationHandler:^{ |
43 |
oldBackgroundTaskIdentifier
= backgroundTaskIdentifier; |
44 |
if ([self.myTimer
isValid]) { |
45 |
[self.myTimer
invalidate]; |
47 |
self.myTimer
= [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerMethod:) userInfo:nil repeats:YES]; |
50 |
-
( void )applicationWillEnterForeground:(UIApplication
*)application |
52 |
if (backgroundTaskIdentifier
!= UIBackgroundTaskInvalid){ |
53 |
[application
endBackgroundTask:backgroundTaskIdentifier]; |
54 |
if ([self.myTimer
isValid]) { |
55 |
[self.myTimer
invalidate]; |
60 |
-
( void )applicationWillEnterForeground:(UIApplication
*)application |
62 |
if (backgroundTaskIdentifier
!= UIBackgroundTaskInvalid){ |
63 |
[application
endBackgroundTask:backgroundTaskIdentifier]; |
64 |
if ([self.myTimer
isValid]) { |
65 |
[self.myTimer
invalidate]; |
最新文章
- IOS7开发~Xcode5制作framework
- HBase保存的各个字段意义解释
- SQL你必须知道的-增删改查与约束
- python 重载 __hash__ __eq__
- FastDFS问题汇总
- 0118——UILabel和导入字体
- JDK自带工具jps,jstat,jmap,jconsole使用
- 使用PHP把下划线分隔命名的字符串 转换成驼峰式命名方式 , 把下划线后面的第一个字母变成大写
- fastboot完成自己主动命令
- bzoj4819 [Sdoi2017]新生舞会
- 一次和matplotlib和numpy的初识及简单的异常值清理
- [python爬虫]Requests-BeautifulSoup-Re库方案--Requests库介绍
- 使用SQL查看表字段和字段说明
- Nginx 安装配置教程
- lumen之composer自动加载
- MariaDB学习记录
- php登陆绑定手机验证码使用阿里大于接口
- Django admin后台操作
- 在创建一个MVC控制器,显示运行所选代码生成器时出错(带读写,使用EF)
- python正则的使用
热门文章
- 从xtrabackup备份恢复单表【转】
- spring动态加载(刷新)配置文件 [复制链接]
- http://blog.csdn.net/u011001723/article/details/45621027
- python 列表元组加减乘除法
- 几个比较实用的CSS
- DDD领域模型企业级系统Unity(五)
- intelliJ 打包jar的多种方式
- java8中ConcurrentHashMap
- JavaScript中变量的相互引用
- doc文档生成带目录的pdf文件方法