检测应用程序何时关闭

JLo*_*uis 11 android detect android-activity

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

Chr*_*ton 19

这是一个有缺陷的设计理念,它反映了对系统的误解 - 当整个过程终止时,它已经死了,意味着你的代码不再运行.

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

也就是说,您可以尝试使用ndk为进程终止信号提供处理程序,但我仍然不会指望它在所有情况下工作.除非您已经熟悉所涉及的概念,否则从这获得任何声音功能的潜力有限可能不合理.

并且不要错误地清理安全机制,因为文件在您的应用程序运行时存在,并且如果您的应用以意外方式终止,则会保留.


jcx*_*ier 8

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

  • 鼓励使用`onPause()`,因为`onDestroy()`执行不是100%可靠(它依赖于系统资源) (3认同)
  • 但这会在每次设备旋转时清除数据库 (3认同)
  • onDestroy() 有时似乎不起作用,android 只是跳过执行 onDestry() 方法。 (2认同)