何时在Android中关闭光标?

Cri*_*ris 32 android cursor

我有一个应用程序,它使用游标从sqlite数据库中的rawQuery选择数据,以填充Android中的ListView; 每次用户点击listview项时,我都会创建一个新的Activity实例来重新填充listview.呼叫cursor.close()db.close()避免记忆问题更好吗?我实际上db.close()参与OnDestroy()了我的活动.

DeR*_*gan 21

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

顺便说一句......您不必listview每次都为用户点击事件重新创建.只需通知已在listview上设置的适配器数据发生了一些变化.

就像是

youradaptername.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

这应该listview自动重新填充你的内容.


Muh*_*hab 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 ...
Run Code Online (Sandbox Code Playgroud)

  • 将cursor.close()包装在finally子句中总是好的做法.这样,无论是否在处理过程中抛出RuntimeException,都要确保光标已关闭. (8认同)