我后来是这么解决不知道行不行,能够长期的在后台执行
首先我在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]; |
- IOS 后台执行
在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间 ...
- IOS后台执行机制 与 动作
当用户按下"Home"键或者系统启动另外一个应用时,前台foreground应用首先切换到Inactive状态,然后切换到Background状态.此转换将会导致先后调用应用代理的 ...
- IOS 后台执行 播放音乐
iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...
- IOS后台执行
大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线 ...
- IOS开发之----详解在IOS后台执行
文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以,1.音乐2.location 3.voip 文二 ...
- IOS的后台执行
写在前面给大家推荐一个不错的站点 www.joblai.com 本文章由央广传媒开发部 冯宝瑞整理.哈哈 http://www.cocoachina.com/bbs/read.php? tid=14 ...
- ios项目里扒出来的json文件
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...
- iOS项目开发实战——通过Http Get方式与server通信
移动client往往须要同后台server进行通信,上传或者下载数据,最经常使用到的方式就是Http Get,如今我们来学习在iOS项目中使用Get方式同server进行通信. [一]server端实 ...
- iOS项目Info.plist中关键字汇总
1. Application does not run in background (键名:UIApplicationExistsOnSuspend) 自从iOS4.0之后,当你在应用程序执行的时候按 ...
随机推荐
- VCForPython27.msi安装后, 还显示error: Unable to find vcvarsall.bat
C:\Users\zpc\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC 增加环境变量: SET VCPYTH ...
- 普通用户修改root密码【转】
在普通用户下修改root用户密码 1 从普通用户切换到root用户 sudo -s 再输入密码.2 输入passwd ,会提醒你输入当前用户密码,验证后会提醒你输入root用户密码.3 切换到ro ...
- WPF 中定时器的使用
DispatcherTimer timer; private void Window_Loaded(object sender, RoutedEventArgs e) { timer = new Di ...
- PHP URL中包含中文,查看时提示404
使用Microsoft Web Platform在IIS里配置安装一个wordpress,一切顺利. 当添加一片文章时,自动生成URL类似如下: http://localhost/wordpress/ ...
- 001_nginx常用参数查询
一.underscores_in_headers on; Nginx 默认把名称包含下划线的 Headers 视为无效,直接移除.如果你希望让这类型的信息生效,那你要把 underscores_in_ ...
- 深入理解java虚拟机-01 走进java
第一章是对java的产生,历史的整体介绍 java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines.使用java的设备多达几十亿台 1.概述 优点 ...
- 更换网页tab标题图标
在首页HTML文件中,加入link命令,<link>是放在<head>与</head>之间 例如下面这样: <HEAD><link rel = & ...
- **CI中的order_by在get_where之前
public function show_list_by_order($array_data, $order_field, $order_mode) { $query = $this->db-& ...
- [转]Javascript原型继承
真正意义上来说Javascript并不是一门面向对象的语言,没有提供传统的继承方式,但是它提供了一种原型继承的方式,利用自身提供的原型属性来实现继承.Javascript原型继承是一个被说烂掉了的话题 ...
- JQuery表格插件
http://www.datatables.club/example/#styling Datatables快速入门开发--一款好用的JQuery表格插件 博主是一个java后端程序员,前端技术会 ...