关闭应用程序后,我需要清除应用程序的数据库(删除所有表)。我决定在一些Activity的onDestroy()中实现这一点。据我所知,当应用程序完成运行时会调用所有onDestroy()方法。

最佳答案

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


  注意:不要指望此方法被称为保存数据的地方!例如,如果活动正在内容提供商中编辑数据,则这些编辑应在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处提交。通常实现此方法以释放与活动相关联的线程之类的资源,以使被破坏的活动不会在其其余应用程序仍在运行时留下这些东西。在某些情况下,系统会简单地终止活动的托管过程,而无需在其中调用此方法(或任何其他方法),因此,不应将其用于处理在过程消失后仍然存在的事情。


相反,您应该创建一个扩展Application的类,并将表放入onCreate()方法(如果存在),因为该方法在应用程序的生命周期中仅被调用一次。

但是,如果每次应用程序停止运行时都需要清除数据,则应重新考虑使用数据库,因为它们是用于持久存储的。

10-02 08:42
查看更多