2013-03-15 74 views

回答

5

我通過在應用程序啓動時以及應用程序進入前臺時在NSUserDefaults中將BOOL設置爲YES來實現此目的。

我當應用程序進入背景此相同的值設置爲NO

didFinishLaunchingWithOptions開始時(將標誌設置爲YES之前),我檢查標誌當前是否設置爲YES。如果是YES,那麼我知道該應用程序不正確地崩潰。

然而,這並不能檢查,如果應用程序是在後臺(由操作系統或用戶)殺害。

您可以處理接近,而在後臺(由操作系統或用戶)通過設置一個標誌,當應用程序進入後臺並清除標誌時,應用程序進入前景的力量。然後檢查didFinishLaunchingWithOptions方法中的這個標誌。如果這個標誌被設置,那麼你知道你的應用程序在後臺被殺害。

請記住,一個強制關閉,同時在後臺實在不應該被認爲是一個「意外關閉」。這實際上是相當期待的。

+0

謝謝。是的,這正是我需要的。 – Ross 2013-03-15 04:01:13

3

是的,您可以這樣做:最簡單的方法是在<Application_Home>/Documents/目錄中創建一個已知名稱的文件,然後在「正常」退出時刪除該文件。如果文件在啓動時出現,則說明前一個退出並不是「正常」的退出。

您可以定期更新文件內容,每分鐘在計時器上寫入當前時間戳。這樣你就可以知道什麼時候異常退出發生了。

+0

+1我也不會想到的這個 – borrrden 2013-03-15 01:28:18

+1

如何在iOS下定義「正常」退出? – user523234 2013-03-15 02:54:42

+1

@ user523234通過'applicationDidEnterBackground:'。或者在applicationWillTerminate方法中,如果應用程序不支持背景。 – borrrden 2013-03-15 03:26:50

0

生病後這只是供將來參考:

對於額外的覆蓋檢查活動狀態與

  • (無效)applicationDidBecomeActive:(UIApplication的*)應用
  • (無效)applicationWillResignActive:(UIApplication的* )應用

然後NSUserDefaults的使用,以保持狀態軌道

背景檢查之間的主要區別在於,當應用程序仍在前臺執行時,用戶通過應用程序切換器立即關閉應用程序時,它們會覆蓋邊緣案例。這也有助於爲背景兼容的應用程序,我認爲

我認爲它可能給你一個崩潰和關閉這些力量之間更多的報道......雖然我沒有測試電池耗盡

相關問題