当应用程序关闭时,我该如何清除我的数据库?

3
在关闭应用程序后,我需要清除应用程序的数据库(删除所有表)。 我决定在某个Activity的onDestroy()中实现这一点。据我所知,当应用程序运行完毕时,所有onDestroy()方法都会被调用。
但如果这是一种不好的做法,请推荐其他在关闭应用程序时清除数据库的方法。

如果用户将应用程序置于后台,Android 最终会仅仅杀死该进程,而不调用任何 Activity 的 onDestroy() 方法。 - David Wasser
你可以在应用程序启动时清除所有旧数据并重新创建数据库... - William Da Silva
3个回答

3
这不是一个好的选择,因为无法保证当您的应用程序关闭时会调用onDestroy()。它可能会被系统立即终止,这种情况下您将无法清除数据。正如文档中所述:

注意:不要指望该方法被调用来保存数据!例如,如果活动在内容提供程序中编辑数据,则应在 onPause() 或 onSaveInstanceState(Bundle) 中提交这些编辑,而不是在此处。通常实现此方法是为了释放与活动关联的线程等资源,以便销毁的活动在其应用程序的其他部分仍在运行时不会留下这些东西。有些情况下,系统会简单地杀死活动的托管进程,而不在其中调用此方法(或任何其他方法),因此不应使用它来执行希望在进程消失后仍然存在的任务。

相反,您应该创建一个扩展Application的类,并在onCreate()方法中删除表(如果存在),因为该方法只在应用程序的生命周期中调用一次。
但是,如果您感觉需要每次应用程序停止运行都清除数据,您应该重新考虑使用数据库,因为它们适用于持久存储。

1

一个内存数据库会对你有用吗?该数据库首先从未保存到持久存储中,只存在于进程存活且数据库连接打开的时间。


0

请查看这个答案

至于何时删除所有表格,最佳实践应该是在onPause()中执行此操作或释放任何其他资源,如果isFinishing()返回true。

快速提示:如果您的应用程序由许多活动组成,则当然只需在根活动的onPause()中调用此函数。

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接