Java Close从未被显式调用
我有一个由sqlite db提供的listview。我在几个不同的点调用fillData()来更新listviewJava Close从未被显式调用,java,android,Java,Android,我有一个由sqlite db提供的listview。我在几个不同的点调用fillData()来更新listview private void fillData() { mDbHelper.open(); Cursor c = mDbHelper.fetchAllNotes(table, columns, selection, selectionArgs, null, null); startManagingCursor(c); S
private void fillData() {
mDbHelper.open();
Cursor c = mDbHelper.fetchAllNotes(table, columns, selection, selectionArgs, null, null);
startManagingCursor(c);
String[] from = new String[] { "quantity", "color", "style" };
int[] to = new int[] { R.id.textQuantity, R.id.textColor, R.id.textStyle };
setListAdapter(new SimpleCursorAdapter(this, R.layout.recordrow, c, from, to) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
return v;
}
});
}
这很有效。。。问题是,当我打开/关闭/跳转活动时,logcat中会出现错误。但它不会使程序崩溃。错误是:请确保在光标上显式调用close()
和
从未对数据库显式调用close()
因此在}下;如果我放入mDbHelper.close(),它会崩溃,说数据库未打开。如果我放置c.close(),我的listview将永远不会填充。我试着把它们放在其他不同的地方,它给我的错误是游标/数据库已经关闭了。有什么想法吗?如果所有内容都在一个活动中,只需打开数据库并在onCreate()中使用光标,然后在onDestroy()中关闭即可。 另一个选项是使用singleton或smoething,如果为null,则在操作之前打开数据库或游标
之所以会出现错误,是因为如果要完成对数据库的操作,就应该将其关闭。首先,不推荐使用startManagingCursor方法。您可能希望删除该选项,然后将mDbHelper.close()放在}之后;如果我这样做,listview将被填充,但我会收到几个“结束未被停用或关闭的游标”错误。