如何在ios中每n秒连续在后台线程中运行一个进程

时间:2014-03-31 06:12:40

标签: ios iphone multithreading ios5 ios7

我正在尝试在后台线程中运行该进程。我希望这个过程在60秒内完成并再次开始运行。无论应用程序是在前台还是后台。我不知道如何实现以及在哪里实现它。我正在使用ios7.在这个过程中我也在进行位置更新。

我读到了后台任务,但没有正确理解这个过程。有人能为我提供良好的资源或链接吗?

2 个答案:

答案 0 :(得分:0)

ios没有为后台进程提供这样的api,不像使用服务的android那样。你可以使用 timer 进行连续后台进程。还有 dispatch_async,后台选择器< / strong>用于高效的后台处理。

希望这有帮助。

答案 1 :(得分:0)

你可以使用这样的东西进行后台处理,但记住苹果已经限制了10-15分钟来完成处理。

UIApplication*    app = [UIApplication sharedApplication];
task = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:task];
        task = UIBackgroundTaskInvalid;
    }];
// Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Do the work associated with the task.
        NSLog(@"Started background task timeremaining = %f", [app backgroundTimeRemaining]);
        if (connectedToNetwork) {
            // do work son...
        }

        [app endBackgroundTask:task];
        task = UIBackgroundTaskInvalid;
    });

您还可以查看以下内容:

**BOOL backgroundSupported = NO;

if ([device respondsToSelector:@selector(isMultitaskingSupported)])

   backgroundSupported = device.multitaskingSupported;**