2016-08-08 60 views
1

當我的應用程序進入後臺模式並且iPad被鎖定時,我在應用程序中遇到了一個奇怪的問題。直到那時它的工作正常,但是當我解鎖設備並從後臺打開應用時,它會崩潰。當應用程序進入後臺並且iPad被自動鎖定時,應用程序崩潰

這是崩潰日誌,我從設備獲取

Exception Type: 00000020 
Exception Codes: 0x000000008badf00d 
Exception Note: SIMULATED (this is NOT a crash) 
Highlighted by Thread: 8 

Application Specific Information: 
<BKNewProcess: 0x12cd18cb0; com.apps-factory; pid: 540; hostpid: -1> has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x12cd1e3b0> id: 540-72C6AF6C-F674-40E8-BA89-EFE4BF52F8D6 name: Called by UIKit, from <redacted> process: <BKNewProcess: 0x12cd18cb0; com.apps-factory; pid: 540; hostpid: -1> permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:540 preventSuspend preventIdleSleep preventSuspendOnSleep 
)} 

Elapsed total CPU time (seconds): 82.430 (user 82.430, system 0.000), 23% CPU 
Elapsed application CPU time (seconds): 77.475, 21% CPU 

Filtered syslog: 
None found 

我的應用程序在屏幕上會像基於從DB這正與服務器同步數據的降雨影響連續點動畫。

任何幫助將不勝感激。 在此先感謝!

+0

[iOS7:後臺任務(「myapp」具有超出允許時間的活動斷言)的可能重複](http://stackoverflow.com/questions/22679845/ios7-background-task-myapp-has-active-assertions-超出允許的時間) –

+0

@Ali Beadle:我沒有執行任何後臺任務!我只是每分鐘運行一次計時器來獲取Web服務數據。所以我認爲我的問題是不同的.. –

+0

正如@Dhabesh所說,這個錯誤與後臺任務有關。所以即使你不打算這樣做,背景中仍有一些東西在運行。 –

回答

3

查看你的crash log我相信你的崩潰背後的原因是由於3 mins (180 seconds)之後的後臺提取仍在進行中。

所以如果我3分鐘後沒有錯,它會殺死你的應用程序,而你重新打開它已經在崩潰模式下,所以不會直接運行。

我面臨同樣的問題,在我的應用程序,以便通過AppDelegate這樣來解決這個問題,我有我的代碼開始background task

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]; 

,比我們要結束應用程序代理方法任務

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    __block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
       [application endBackgroundTask:bgTask]; 
       bgTask = UIBackgroundTaskInvalid; 
     //Save your state or data while invalidating bgTask. 

     }]; 
} 

這就是爲什麼在你的崩潰報告中蘋果清楚地提到操作系統只允許背景中的任何任務只有3分鐘!

檢查崩潰

Application Specific Information: 
    <BKNewProcess: 0x12cd18cb0; com.apps-factory; pid: 540; hostpid: -1> has active assertions beyond permitted time: 
    {(
     <BKProcessAssertion: 0x12cd1e3b0> id: 540-72C6AF6C-F674-40E8-BA89-EFE4BF52F8D6 name: Called by UIKit, from <redacted> process: <BKNewProcess: 0x12cd18cb0; com.apps-factory; pid: 540; hostpid: -1> permittedBackgroundDuration: 180.000000 reason: finishTask owner pid:540 preventSuspend preventIdleSleep preventSuspendOnSleep 
    )} 

permittedBackgroundDuration:180.000000 原因:finishTask所有者

意味着我們只有180秒,在背景,提到這裏apple documentation執行任何任務。

如果你仍然需要更多時間來執行你的任務,所以你需要啓用你的app background mode具有特定的原因,否則蘋果可能會拒絕你的應用程序。

希望這將有助於解決您的崩潰。

+0

同意Dhanesh。 – amorbytes

+0

我沒有任何後臺任務,但我正在執行定時器從Web服務獲取數據.. –

+0

是的,這也是一種進程,如果您需要在後臺調用任何服務,則需要在後臺任務中使用NSURLSession,否則3分鐘後將不允許在後臺運行服務。 – CodeChanger

0

那麼這就像是內存轉儲或腳本運行時錯誤。對不起,如果它看起來有點顯而易見,但是您是否檢查過它是否允許在設備被鎖定時在後臺運行?你可以在權限下找到它

+0

在後臺線程中不需要任何工作。所以我沒有爲Capabilities中的Background模式添加任何權限。 –

相關問題