2

在实现 LoaderManager.LoaderCallbacks 的 ListFragment 中打开和关闭数据库资源的最佳位置是哪个?

我有一个实现的列表片段LoaderManager.LoaderCallbacks<Cursor>。现在我初始化加载器onActivityCreatedonCreateLoader返回一个加载器(MyLoader)。MyLoader 类打开数据库资源。然后将 Cursor 对象返回到 onLoadFinished. 在这里我可以在哪里关闭我打开的数据库,因为在光标返回到 onLoadFinished 之前我们无法关闭数据库。

很多人说,在Activity onResume 中打开数据库资源,在onPause 中关闭是最好的。但是如果我使用AsynctaskLoaders 如何关闭数据库资源呢?

我收到以下错误,

close() was never explicitly called on database 'mydb' 
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
4

1 回答 1

1

在完成对数据库close的操作后,您必须这样做。Cursor尝试对所有活动使用 common SQLiteOpenHelper(看看这个),而不是在 every 中调用数据库打开/关闭Activity

于 2012-12-20T12:07:14.203 回答