在我正在构建的PoC Android应用程序中,当关闭时在应用程序上调用垃圾收集器时,我得到android.database.sqlite.DatabaseObjectNotClosedException
。即使我在SQLiteDatabase
以及我正在使用的SQLiteOpenHelper
对象上调用close方法,也会发生这种情况。
我正在使用DAO(从AsyncTask.doInBackground
的{{1}}调用)访问数据库,该DAO包含在构造函数中打开数据库的代码,并且从{{调用此构造函数1}}活动的方法。
Activity
我还有一个方法可以关闭onCreate()
以及//Code in my DAO class
public MyDataSource(Context context) {
dbHelper = new MyOpenHelper(context);
dbHelper.createDatabase();
}
//Calling Activity
MyDataSource myDs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.create);
myDs= new MyDataSource (MyActivity.this);
}
@Override
public void onPause() {
investmentDs.close();
if(ConstantValues.DebugModeManager.DEBUG_CREATE || ConstantValues.DebugModeManager.DEBUG_MODE) {
Log.d(LOG_TAG, "Create screen paused...");
}
super.onPause();
}
个对象,这些对象是从同一个活动的SQLiteDatabase
方法调用的。数据库读/写是在AsyncTask的SQLiteOpenHelper
方法中执行的。
我已覆盖onPause()
的{{1}}方法,如下所示:
doInBackground
我在DAO课程中用close()
方法调用它。
如果需要进一步说明,请告诉我
谢谢,
Debojit
编辑1:
这是从db。
SQLiteOpenHelper
答案 0 :(得分:0)
您的光标对象未关闭。 无论何时完成Cursor对象,都要调用 cursor.close();