首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xcode后台重复触发进程

如何在xcode后台重复触发进程
EN

Stack Overflow用户
提问于 2014-11-20 20:42:48
回答 1查看 118关注 0票数 0

我正在做一个xcode-5的应用程序,我需要在后台模式下上传一些数据,我需要一组重复的代码,直到设备终止后台进程。我可以做一次,但我需要一次又一次地重复,以便我可以检查连接并执行上传。当应用程序进入活动模式时,我也会做同样的事情。目前,我使用以下代码的计时器:

代码语言:javascript
复制
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[bgrdTimer_ActiveMode invalidate];
bgrdTimer_ActiveMode=nil;

    self.backgroundTask=[application beginBackgroundTaskWithExpirationHandler:^{
        self.backgroundTask=UIBackgroundTaskInvalid;
    }];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{

    bgrdTimer_BackGroundMode=[NSTimer scheduledTimerWithTimeInterval:40.00 target:self selector:@selector(repeatUploadProcess_BackGroundMode) userInfo:nil repeats:YES];

    });
 }


 - (void)applicationDidBecomeActive:(UIApplication *)application
 {
   [bgrdTimer_BackGroundMode invalidate];
   bgrdTimer_BackGroundMode=nil;
   bgrdTimer_ActiveMode=[NSTimer scheduledTimerWithTimeInterval:40.00 target:self selector:@selector(repeatUploadProcess_ActiveMode) userInfo:nil repeats:YES];
 }

repeatUploadProcess_ActiveMode和repeatUploadProcess_BackGroundMode是包含假定要重复的代码集的方法

问题是,当我使bgrdTimer_ActiveMode无效时,其他计时器不会被调用。

EN

回答 1

Stack Overflow用户

发布于 2014-11-21 01:14:31

你开启后台抓取模式了吗?单击项目目标,并在capabilities选项卡下选择"background fetch“。

理论上,您还应该设置应用程序endBackgroundTask:bgTask。听起来你知道,但如果它永远不会结束,iOS最终会杀死你的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27039921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档