如何在后台运行NSTimer超过180秒?

时间:2016-09-26 05:03:03

标签: ios iphone

我已经集成了计步器,当应用程序在后台时,我正在做一些计算。但是在180秒之后,我的应用程序被Apple OS强制终止。有没有办法超过180秒运行计时器。

1 个答案:

答案 0 :(得分:0)

如果您关注时间并希望在指定的时间间隔后确切知道,我建议您在所需的时间间隔后注册获取具有开火日期的本地通知,而不是使用计时器。

如果您需要在后台执行长任务,则必须以这种方式使用系统调用beginBackGroundTaskWithExpirationHandler方法注册它:

    - (void)applicationDidEnterBackground:(UIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
        // Clean up any unfinished task business by marking where you
        // stopped or ending the task outright.
        [application endBackgroundTask:bgTask];
        bgTask = 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, preferably in chunks.

        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

您也可以参考此处的链接:BackGroundTask