从未明确调用过关闭

我有一个由sqlite db提供的listview。 我在几个不同的点调用fillData()来更新列表视图。

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永远不会填充。 我已经尝试将它们放在其他各个地方并且它给出了错误,说光标/数据库已经关闭。 关于该怎么做的任何想法?

如果一切都在一个Activity中,只需在onCreate()中打开数据库和游标,然后在onDestroy()中关闭。 另一种选择是使用singleton或smoething,如果它为null,它将在操作之前打开数据库或游标。

引起错误是因为如果要在数据库上完成操作,则应关闭它。