0
我目前正在使用Fragments中的ListViews。 Listviews由Cursorloader加載,但沒有ContentManager。所以代碼看起來像這樣,它的工作原理:如何在Cursorloader中關閉數據庫
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("SoapERP", "onCreateLoader");
CursorLoader loader = new CursorLoader(getActivity()) {
final DBHelper dbhelper1= new DBHelper(getActivity());
@Override
public Cursor loadInBackground() {
Cursor c = null;
dbhelper1.open();
c = dbhelper1.fetchAllMatnameswithID();
// dbhelper1.close();
return c;
}
};
return loader;
我的問題是,我得到一個LogCat錯誤消息,數據庫未關閉。但是,如果我使用dbhelper.close();我得到錯誤「數據庫已經關閉」,這也是可以理解的,因爲它就在返回語句之前。在返回語句代碼無法訪問之後,如果我聲明DBHelper dbhelper1最終該程序崩潰,而logcat中沒有任何信息。那麼我的失敗是什麼?
爲了防止錯誤,我試圖用Content Provider來做,但問題仍然是一樣的。但我認爲現在我更接近這個問題 - 線程。我正在關閉數據庫,而另一個線程仍在收集數據。現在我完全不清楚如何得到適當的解決方案。 –