2012-04-30 124 views
6

我想知道当应用程序被关闭,因为我需要删除数据库,当用户关闭应用程序,只是在那一刻,当用户关闭该应用程序是擦除SQLite的正确的时刻数据库,我如何检测这个?检测,当应用程序被关闭

+2

**阅读文档:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle –

+3

是的,我知道这一点,但问题是,我需要知道什么时候总申请已关闭,否则在活动结束时关闭。 – JLouis

+0

你想要什么是不可能的。您的程序可能随时被用户或操作系统终止,而您不会收到通知。 – CommonsWare

回答

7

假设您没有finish()您的主要活动,清除onDestroy()该活动的方法内的数据库可能是您想要完成的最接近的方法。正如评论中指出的那样,请参阅http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

的onDestroy()似乎没有工作的时候,机器人只是跳过执行onDestry()方法。 – San

+2

鼓励使用'onPause()',因为'onDestroy()'执行不是100%可靠的(它依赖于系统资源) –

15

这是一个有缺陷的设计理念,体现了系统的误解 - 当过程总体死了,就死了,这意味着你的代码不再运行。

你可以做一些跟踪,并有最后onDestory()'d活动做清理出于礼貌,但不要以为它会永远实际发生(该方法并不总是称为)。如果有一个陈旧的副本是一个问题,请在下次运行时将其清理干净。

这就是说,你可以尝试使用NDK为过程终止信号的处理程序,但我仍然不会它在所有情况下工作的计数。除非你已经熟悉所涉及的概念,否则从这种获得任何声音功能的有限潜力可能不会证明这种努力是合理的。

并且不要为安全机制清理一分钟的错误,因为该文件在应用程序运行时存在,如果应用程序以意外的方式终止,该文件将保留。

+0

“如果有一个陈旧的副本是一个问题,请在下次运行时清理它。 - 谢谢,很好的建议 – Nactus

相关问题