我应该关闭从适配器获取的光标吗?

Should I close cursor gotten from adapter?

提问人:ZNS 提问时间:12/11/2012 更新时间:12/11/2012 访问量:236

问:

如果我有一个 SimpleCursorAdapter 并且我在实例化的适配器上调用 getCursor(),那么我应该在完成它时关闭这个游标,因为 java 是按值传递的?

简单示例:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(.....);
myListView.setAdapter(adapter);

Cursor cursor = adapter.getCursor();
cursor.moveToFirst();
int id = cursor.getInt(0);
...?

如果在此处关闭光标,适配器是否会关闭光标?

Java Android 内存 按值传递

评论


答:

2赞 Sam 12/11/2012 #1

如果我有一个 SimpleCursorAdapter 并且我在实例化的适配器上调用 getCursor(),那么我应该在完成它时关闭这个游标,因为 java 是按值传递的?

正如您所说,适配器仍在使用光标,因此不,您不应关闭它。只有在完全完成光标使用后,才应关闭光标。

评论

0赞 ZNS 12/11/2012
我的问题更多的是关于返回的游标是否指向适配器使用的同一游标,因为传递值。但我想按值传递不适用于获取属性?
0赞 Sam 12/11/2012
是的,它是同一个光标。您始终可以在传递到的游标上保存本地引用并测试 。new SimpleCursorAdapter()cursor == adapter.getCursor()
0赞 Sam 12/11/2012
请注意,请注意您在 Java 中的使用方式......仅用它来比较原始对象(不包括字符串)和实例(如上所述)。如果您不熟悉,请阅读 How do I compare strings in Java?,了解 和 的详细说明。====equals()