码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 项目一直在后台运行

时间:2014-11-19 16:04:52      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:后台   ios   thefeng   

我后来是这么解决不知道行不行,可以长期的在后台运行
首先我在xx-info.plist 里的 "Required background modes" 里加入"App provides Voice over IP services"

然后在delegate里加入以下代码,原理是进入后台时程序会在600秒那样结束任务,我做的就是在结束任务前新开一个任务,再结束旧任务,这样就一直的在后台运行,希望可能帮助到更多的人,我也查了很久才找到这个方法的。


UIBackgroundTaskIdentifier backgroundTaskIdentifier;
02 UIBackgroundTaskIdentifier oldBackgroundTaskIdentifier;
03  
04 - (BOOL) isMultitaskingSupported{
05      
06     BOOL result = NO;
07      
08     if ([[UIDevice currentDevice]
09           
10          respondsToSelector:@selector(isMultitaskingSupported)]){ result = [[UIDevice currentDevice] isMultitaskingSupported];
11          
12     }
13      
14     return result;
15      
16 }
17  
18 - (void) timerMethod:(NSTimer *)paramSender{
19     count++;
20     if (count % 500 == 0) {       
21         UIApplication *application = [UIApplication sharedApplication];
22          
23         //开启一个新的后台
24          
25         backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
26    
27         }];
28         //结束旧的后台任务
29         [application endBackgroundTask:backgroundTaskIdentifier];
30         oldBackgroundTaskIdentifier = backgroundTaskIdentifier;
31     }
32     NSLog(@"%ld",count);
33 }
34 - (void)applicationDidEnterBackground:(UIApplication *)application
35 {
36     if ([self isMultitaskingSupported] == NO){
37          
38         return; }
39     //开启一个后台任务
40      
41     backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{       
42     }];
43     oldBackgroundTaskIdentifier = backgroundTaskIdentifier;
44     if ([self.myTimer isValid]) {
45         [self.myTimer invalidate];
46     }
47     self.myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerMethod:) userInfo:nil repeats:YES];
48 }
49  
50 - (void)applicationWillEnterForeground:(UIApplication *)application
51 {
52     if (backgroundTaskIdentifier != UIBackgroundTaskInvalid){
53         [application endBackgroundTask:backgroundTaskIdentifier];
54         if ([self.myTimer isValid]) {
55             [self.myTimer invalidate];
56         }
57     }
58 }
59  
60 - (void)applicationWillEnterForeground:(UIApplication *)application
61 {
62     if (backgroundTaskIdentifier != UIBackgroundTaskInvalid){
63         [application endBackgroundTask:backgroundTaskIdentifier];
64         if ([self.myTimer isValid]) {
65             [self.myTimer invalidate];
66         }
67     }
68 }

iOS 项目一直在后台运行

标签:后台   ios   thefeng   

原文地址:http://blog.csdn.net/apple_wkf/article/details/41281677

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!