我应该在 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 方法中声明它。

这方面最方便的方法就是在需要访问的时候进行初始化。然后使用它并在使用后立即关闭。 onStoponDestroy 不保证被调用。所以在这些方法中处理这种资源是不好的。

所以,如果你需要在你的应用程序中使用它三次,那么它就初始化三次也关闭三次。从内存管理的角度来看,它也有利于应用程序开发。