何时在Android中关闭光标?

时间:2010-11-08 11:17:16

标签: android cursor

我有一个应用程序,它使用游标从sqlite数据库中通过rawQuery选择数据,以在Android中填充ListView;每次用户点击listview项时,我都会创建一个新的Activity实例来重新填充listview。是否最好调用cursor.close()db.close()来避免内存问题?实际上,我的活动db.close()中有OnDestroy()

2 个答案:

答案 0 :(得分:21)

一旦检索到方法中特定对象的值,就可以关闭cursor

btw ...您不必每次都为用户点击事件重新创建listview。只需通知已在列表视图中设置的适配器数据发生了一些变化。

这样的东西
youradaptername.notifyDataSetChanged();

这应该自动重新填充您的listview内的内容。

答案 1 :(得分:6)

好吧,如果你每次都在同一个Activity上创建一个新实例(虽然我不确定它是一个很好的编程习惯)。一旦完成遍历/遍历列表视图的源,就可以关闭光标。

示例:

示例实现类似于

//Pre cursor code
startManagingCursor(cursor);
if (cursor.moveToFirst()) {
    do {
        if (cursor.getString(0).equals(value)) {
            cursor.close();
            a = true;
            return a;
        }
    } while (cursor.moveToNext());
}

//Close cursor here, when its work is complete
cursor.close();

//Post cursor code ...