在我的应用程序的onCreate中打开时,在哪里关闭SQLiteOpenHelper?

时间:2013-01-21 17:37:51

标签: android sqliteopenhelper

我读到在扩展SQLiteOpenHelper的类中只使用一个Application实例更好:

public class MyApplication extends Application {

    private static SQLiteOpenHelper dBHelper;

    @Override
    public void onCreate() {
        super.onCreate();
        dBHelper = new DBHelper(this);
    }

    public static SQLiteDatabase getDB() {
        return dBHelper.getWritableDatabase();
    }
}

但在那种情况下,我应该把它关在哪里?

由于

2 个答案:

答案 0 :(得分:0)

您应始终拥有一个且仅有一个SQLOpenHelper实例,并且您永远不应该关闭它。可以找到更详细的说明herehere

答案 1 :(得分:0)

您可以在onTerminate()子类的Application方法中关闭数据库。如果您的应用程序可以处理已关闭的数据库(通过重新打开...),您可以在onLowMemory()方法中另外关闭(但这不会释放太多内存)。

更重要的是,如果使用完毕,则关闭所有数据库游标。

修改

vmirnonov是对的,onTerminate()只在模拟器中调用,所以忽略答案的那一部分。