我有一個計時器應用程序,它計數無限期的時間(直到用戶停止計時器)。它非常像默認的iOS時鐘秒錶。如何防止我的計時器應用被iOS終止
我已閱讀有關作爲負責任的後臺應用程序的文章。我沒有任何UI變化發生,當應用程序在後臺運行時停止計時器,並在返回到前臺時恢復計時器。該應用每隔30分鐘發送一次本地通知以提醒用戶休息一下。
問題:沒有失敗我的應用程序幾個小時後(2-6小時左右)終止,當前計時器和信息丟失。
事情我已經嘗試:
-As上述我改變了我的應用程序遵循的是一個負責任的後臺程序(之前,我有定時器計數UI起來也定時器運行,即使在後臺準則)。我認爲這會解決問題,因爲我的應用程序沒有使用太多內存或執行任何密集型任務。
- 我也嘗試在ApplicationWillTerminate中保存當前計時器(到NSUserDefaults)的數據,然後在DidFinishLaunchingWithOptions上恢復它。它似乎沒有工作。這幾乎就像我的應用程序強制退出或某事,因爲如果ApplicationWillTerminate被調用,那麼它會保存數據並在應用程序再次啓動時恢復它。神祕。
- 目前我正在ApplicationDidEnterBackground上保存NSTimer的開始時間的NSDate,使計時器無效,並啓動計時器並在ApplicationWillEnterForeground上恢復開始時間。仍然沒有運氣。
事情是這影響到我的用戶的一小部分 - 所以它不像它是每個人的問題,這使得它更容易混淆。當然,我仍然想要修復它,因爲這是一個非常蹩腳的錯誤 - 我自己也遇到了它(在iPhone 5上),所以它不一定是舊的iPhone低內存或其他問題。
這真讓我非常吃驚,我已經完成了我的研究,並且也很好地搜索了堆棧溢出問題,並且似乎找不到任何幫助我的東西。
任何幫助將不勝感激,隨時提出更多問題或告訴我澄清。
爲什麼操作系統殺死你的應用程序很重要?您可以在應用程序運行時安排本地通知,用戶仍然可以看到這些通知。正如您現在所做的那樣,您可以節省開始時間。如果用戶沒有使用您的應用程序,則無需使用空間和電源就可以坐在後臺。 – Caleb
因爲當用戶輸入應用程序時,我希望他們查看自啓動以來應用程序的運行時間以及應用程序死機時信息丟失的時間。我認爲問題是(正如Wain指出的那樣)ApplicationWillTerminate沒有被調用 - 所以信息不會被保存。我正在測試,以確保儘管。我仍然覺得很奇怪,儘管在幾個小時後我的應用程序被殺死了,特別是因爲我在後臺沒有任何事情發生。 – LazerLex