我想知道应用程序何时关闭,因为我需要在用户关闭应用程序时擦除数据库,就在用户关闭应用程序的那一刻是擦除SQLite数据库的正确时刻,我如何检测到这一点?
ybzsozfc1#
这是一个有缺陷的设计思想,它反映了对系统的误解-当进程整体死亡时,它已经死亡,这意味着您的代码不再运行。你可以做一些跟踪,并让最后一个onDestory()'d活动做清理工作,但不要假设它总是会发生(该方法不会 * 总是 * 被调用)。如果有一个陈旧的副本是一个问题,请在下次运行时清理它。也就是说,你可以尝试使用ndk为进程终止信号提供一个处理器,但我仍然不指望它在所有情况下都能工作,除非你已经熟悉了所涉及的概念,否则从中获得任何合理功能的有限潜力可能不值得付出努力。不要为安全机制而错误地清理,因为文件在您的应用程序运行时就在那里,如果您的应用程序以意外的方式终止,文件将仍然存在。
nfg76nw02#
假设你没有finish()你的主活动,在该活动的onDestroy()方法中清除你的数据库可能是你想要完成的最接近的事情。正如在评论中指出的,请参考http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle。
finish()
onDestroy()
qxsslcnc3#
在最后一个Activity中,您可以在onBackPressed方法中添加以下内容:
override fun onBackPressed() { super.onBackPressed() if(this is /*your activity*/ && isTaskRoot) { println("App closed by user") } }
字符串
3条答案
按热度按时间ybzsozfc1#
这是一个有缺陷的设计思想,它反映了对系统的误解-当进程整体死亡时,它已经死亡,这意味着您的代码不再运行。
你可以做一些跟踪,并让最后一个onDestory()'d活动做清理工作,但不要假设它总是会发生(该方法不会 * 总是 * 被调用)。如果有一个陈旧的副本是一个问题,请在下次运行时清理它。
也就是说,你可以尝试使用ndk为进程终止信号提供一个处理器,但我仍然不指望它在所有情况下都能工作,除非你已经熟悉了所涉及的概念,否则从中获得任何合理功能的有限潜力可能不值得付出努力。
不要为安全机制而错误地清理,因为文件在您的应用程序运行时就在那里,如果您的应用程序以意外的方式终止,文件将仍然存在。
nfg76nw02#
假设你没有
finish()
你的主活动,在该活动的onDestroy()
方法中清除你的数据库可能是你想要完成的最接近的事情。正如在评论中指出的,请参考http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle。qxsslcnc3#
在最后一个Activity中,您可以在onBackPressed方法中添加以下内容:
字符串