无法endBackgroundTask:标识符4不存在后台任务,或者它可能已经结束

时间:2013-07-13 10:15:56

标签: ios objective-c

在后台实现计时器,如下所示并使用XCode 4.5.2

UIDevice *device = [UIDevice currentDevice];
    BOOL backgroundSupported = NO;
    if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
        backgroundSupported = YES;
    }

    if (backgroundSupported) 
    {
        bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
            [[UIApplication sharedApplication] endBackgroundTask:bgTask];
        }];

      /*timer code goes here*/
    }

我的应用程序在后台运行,我在AppDelegate的applicationDidEnterBackground方法中有上面的代码,并在gdb中获取以下消息

无法endBackgroundTask:标识符4不存在后台任务,或者它可能已经结束。中断UIApplicationEndBackgroundTaskError()以进行调试。

我知道这个问题与Can't endBackgroundTask类似,但没有答案或建议。任何想法?

1 个答案:

答案 0 :(得分:5)

确保您这样声明bgTaskUIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;

我认为您可能将bgTask声明为int或NSNumber。