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来做,但问题仍然是一样的。但我认为现在我更接近这个问题 - 线程。我正在关闭数据库,而另一个线程仍在收集数据。现在我完全不清楚如何得到适当的解决方案。 –