我想知道应用何时关闭,因为我需要在用户关闭应用时删除数据库,就在用户关闭应用的时刻是删除SQLite数据库的正确时刻,我该怎么办?检测到这个?
答案 0 :(得分:17)
这是一个有缺陷的设计理念,它反映了对系统的误解 - 当整个过程终止时,它已经死了,意味着你的代码不再运行。
你可以进行一些跟踪并让最后一个onDestory()'d活动作为礼貌进行清理,但不要假设它总是会实际发生(该方法不是总是调用)。如果有陈旧的副本是个问题,请在下次运行时清理它。
也就是说,您可以尝试使用ndk为进程终止信号提供处理程序,但我仍然不会指望它在所有情况下工作。除非您已经熟悉所涉及的概念,否则从中获得任何声音功能的潜力有限可能不合理。
并且不要因为文件在您的应用程序运行时出现问题而错误地清理安全机制,并且如果您的应用程序以意外方式终止,则会保留该文件。
答案 1 :(得分:8)
假设您没有finish()
您的主要活动,清除该活动的onDestroy()
方法中的数据库可能是您想要完成的最接近的数据库。正如评论中指出的那样,请参阅http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle。