我应该在 onStop() 上关闭我的 DBHelper 吗?
Should I close my DBHelper on onStop()?
我已经关注了 this tutorial,现在有了自己的 DB Contract 和 DB Helper 类。我在 Activity 中有 DBHelper 变量,我在 onCreate()
中设置了它
mDbHelper = new CustomDbHelper(getApplicationContext());
我的问题是:我应该关闭 onStop()
中的 dbHelper 还是不需要?
@Override
protected void onStop() {
super.onStop(); // Always call the superclass method first
mDbHelper.close();
}
Activity中的 onStop() 方法可能永远不会被调用,在系统没有足够内存的低内存情况下,它只会杀死你的Activity 在它的 onPause() 方法被调用之后。 Android Document
一般我们可以在onDestroy()中回收资源,但是也不一定一定会调用。
你不应该在 onCreate
方法中声明它。
这方面最方便的方法就是在需要访问的时候进行初始化。然后使用它并在使用后立即关闭。 onStop
或 onDestroy
不保证被调用。所以在这些方法中处理这种资源是不好的。
所以,如果你需要在你的应用程序中使用它三次,那么它就初始化三次也关闭三次。从内存管理的角度来看,它也有利于应用程序开发。
我已经关注了 this tutorial,现在有了自己的 DB Contract 和 DB Helper 类。我在 Activity 中有 DBHelper 变量,我在 onCreate()
mDbHelper = new CustomDbHelper(getApplicationContext());
我的问题是:我应该关闭 onStop()
中的 dbHelper 还是不需要?
@Override
protected void onStop() {
super.onStop(); // Always call the superclass method first
mDbHelper.close();
}
Activity中的 onStop() 方法可能永远不会被调用,在系统没有足够内存的低内存情况下,它只会杀死你的Activity 在它的 onPause() 方法被调用之后。 Android Document
一般我们可以在onDestroy()中回收资源,但是也不一定一定会调用。
你不应该在 onCreate
方法中声明它。
这方面最方便的方法就是在需要访问的时候进行初始化。然后使用它并在使用后立即关闭。 onStop
或 onDestroy
不保证被调用。所以在这些方法中处理这种资源是不好的。
所以,如果你需要在你的应用程序中使用它三次,那么它就初始化三次也关闭三次。从内存管理的角度来看,它也有利于应用程序开发。