2014-02-25 169 views
6
 UIApplication *application = [UIApplication sharedApplication]; 

     UIBackgroundTaskIdentifier background_task = 0; 

     background_task = [application beginBackgroundTaskWithExpirationHandler: ^{ 

      [application endBackgroundTask:background_task]; 
     }]; 

     SEL selector = NSSelectorFromString(action); 
     timer = [NSTimer scheduledTimerWithTimeInterval:floatUpdateInterval target:self selector:selector userInfo:nil repeats:YES]; 

即使在backgroundTimeRemaining爲0(零)後,上述代碼(計時器)仍在運行。 這怎麼可能?上述類型的方法最多不超過10分鐘嗎?即使在backgroundTimeRemaining爲零後,代碼仍然在後臺運行?

上述代碼是否被認爲是「應用程序商店」可安全提交?

+1

我也在iOS 8中看到了這個。backgroundTimeRemaining從180倒數到0,但後臺線程繼續運行。 – davidgyoung

+0

你有沒有得到任何答案? – Yossi

+0

你在做什麼其他的背景像使用位置服務? –

回答

0

您正在創建計劃重新計劃。 beginBackgroundTaskWithExpirationHandler將在時間到時被調用,這是您停止任何未及時完成的​​機會。

您應該在beginBackgroundTaskWithExpirationHandler中使您的計時器無效。

相關問題