首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止我的计时器应用程序被iOS终止

如何防止我的计时器应用程序被iOS终止
EN

Stack Overflow用户
提问于 2013-09-10 22:26:30
回答 2查看 1.6K关注 0票数 2

我有一个计时器应用程序,它计算的时间不确定(直到用户停止计时器)。它的工作原理非常类似于默认的iOS时钟秒表。

我读过关于做一个负责任的后台应用的文章。我没有任何UI更改发生,停止计时器时,应用程序在后台和恢复计时器时,回到前台。该应用程序每30分钟发出一次本地通知,提醒用户休息一下。

问题:我的应用程序在几个小时后( 2-6个小时左右)就被终止了,现在的计时器和信息都丢失了。

我尝试过的事情:

-As之前,我改变了我的应用程序,以遵循作为一个负责任的后台应用程序(在我有计时器UI计数和计时器运行之前,即使是在后台)。我认为这可以解决这个问题,因为我的应用程序没有消耗太多内存,也没有做任何密集的任务。

-I还尝试在ApplicationWillTerminate中保存当前计时器的数据(到NSUserDefaults),然后在DidFinishLaunchingWithOptions上恢复它。似乎不起作用。这几乎就像我的应用程序是强制退出什么的,因为如果调用ApplicationWillTerminate,它就会保存数据,并在应用程序再次启动时恢复数据。神秘感。

-Currently --我正在保存NSTimer在ApplicationDidEnterBackground上的启动时间的NSDate,使计时器无效,并启动计时器并在ApplicationWillEnterForeground上恢复开始时间。还是没有运气。

问题是,这只影响了我的一小部分用户--这并不是每个人都会遇到的问题,这会让人更加困惑。当然,我仍然想修复它,因为它是一个非常差劲的bug--我自己也遇到过它(在iPhone 5上),所以它不一定是一个旧的iPhone低内存的问题。

这确实让我感到困惑,我做了我的研究,也很好地研究了堆叠溢出的问题,而且似乎找不到什么可以帮助我的东西。

任何帮助都将不胜感激,随时问更多的问题或告诉我澄清。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-10 22:32:17

applicationWillTerminate基本上从来没有被调用过。它不会被调用,当你的应用程序在后台,它被从内存中删除。如果你的应用程序已经有一段时间没有使用了,你应该期待它被从内存中删除。“一段时间”取决于设备当时还在做什么。最好使用applicationDidEnterBackground:applicationWillResignActive:

票数 2
EN

Stack Overflow用户

发布于 2013-09-10 22:31:21

当您的应用程序进入后台,记录您的计时器的运行时间(例如:在NSUserDefaults或任何您喜欢的)。同时记录当前时间。当应用程序返回到前台时,请查看您记录的两个值,并相应地更新经过的时间,即:

elapsedTime = savedElapsedTime + (currentTime - timeWentIntoBackground)

没有理由让你的应用程序在后台保持活跃,只为了跟踪秒的流逝而烧掉用户的电池。

另外,不要依赖applicationWillTerminate。使用applicationWillEnterBackground。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18729754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档