12

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

4

2 回答 2

21

这是一个有缺陷的设计理念,它反映了对系统的误解——当整个进程死亡时,它就死了,这意味着你的代码不再运行。

出于礼貌,您可以进行一些跟踪并让最后一个 onDestory() 的活动进行清理,但不要假设它总是会实际发生(并不总是调用该方法)。如果有一个过时的副本是一个问题,请在下次运行时清理它。

也就是说,您可以尝试使用 ndk 为进程终止信号提供处理程序,但我仍然不能指望它在所有情况下都能正常工作。除非您已经熟悉所涉及的概念,否则从中获得任何健全功能的有限潜力可能无法证明努力的合理性。

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

于 2012-04-30T17:58:20.967 回答
9

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

于 2012-04-30T17:57:17.997 回答