我有一个计时器应用程序,它计数无限期的时间(直到用户停止计时器)。它非常像默认的iOS时钟秒表。如何防止我的计时器应用被iOS终止
我已阅读有关作为负责任的后台应用程序的文章。我没有任何UI变化发生,当应用程序在后台运行时停止计时器,并在返回到前台时恢复计时器。该应用每隔30分钟发送一次本地通知以提醒用户休息一下。
问题:没有失败我的应用程序几个小时后(2-6小时左右)终止,当前计时器和信息丢失。
事情我已经尝试:
-As上述我改变了我的应用程序遵循的是一个负责任的后台程序(之前,我有定时器计数UI起来也定时器运行,即使在后台准则)。我认为这会解决问题,因为我的应用程序没有使用太多内存或执行任何密集型任务。
- 我也尝试在ApplicationWillTerminate中保存当前计时器(到NSUserDefaults)的数据,然后在DidFinishLaunchingWithOptions上恢复它。它似乎没有工作。这几乎就像我的应用程序强制退出或某事,因为如果ApplicationWillTerminate被调用,那么它会保存数据并在应用程序再次启动时恢复它。神秘。
- 目前我正在ApplicationDidEnterBackground上保存NSTimer的开始时间的NSDate,使计时器无效,并启动计时器并在ApplicationWillEnterForeground上恢复开始时间。仍然没有运气。
事情是这影响到我的用户的一小部分 - 所以它不像它是每个人的问题,这使得它更容易混淆。当然,我仍然想要修复它,因为这是一个非常蹩脚的错误 - 我自己也遇到了它(在iPhone 5上),所以它不一定是旧的iPhone低内存或其他问题。
这真让我非常吃惊,我已经完成了我的研究,并且也很好地搜索了堆栈溢出问题,并且似乎找不到任何帮助我的东西。
任何帮助将不胜感激,随时提出更多问题或告诉我澄清。
为什么操作系统杀死你的应用程序很重要?您可以在应用程序运行时安排本地通知,用户仍然可以看到这些通知。正如您现在所做的那样,您可以节省开始时间。如果用户没有使用您的应用程序,则无需使用空间和电源就可以坐在后台。 – Caleb
因为当用户输入应用程序时,我希望他们查看自启动以来应用程序的运行时间以及应用程序死机时信息丢失的时间。我认为问题是(正如Wain指出的那样)ApplicationWillTerminate没有被调用 - 所以信息不会被保存。我正在测试,以确保尽管。我仍然觉得很奇怪,尽管在几个小时后我的应用程序被杀死了,特别是因为我在后台没有任何事情发生。 – LazerLex