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