我试图了解我需要使用的RecyclerView.Adapter实现,其中数据集是Cursor对象。
但是,对于关闭Cursor对象并将其设置为其他值,某些逻辑对我来说并不明确。
close()中到底发生了什么?
这个可以吗。 ?
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject));
或者我应该这样安全地玩吗?
public void setCursor(Cursor cursor){
mCursor.unregisterContentObserver(mMyContentObserverr);
mCursor.close();
mCursor = cursor;
mCursor.registerContentObserver(mMyContentObserverr);
notifyDataSetChanged();
}
使用oldCursor有什么好处?
关闭和设置同一Cursor对象是否存在任何危险?
谢谢
答案 0 :(得分:1)
您包含的两段代码在功能上是等效的。线
Cursor oldCursor = mCursor;
创建一个新的Cursor
引用,该引用指向相同的对象,即mCursor
和oldCursor
在内存中具有相同的位置。由于它们是同一对象,因此oldCursor.close()
与mCursor.close()
完全相同。
但是,当您将mCursor
设置为cursor
时,mCursor
不再引用已关闭的游标;现在它与cursor
引用相同的对象。您在新mCursor
上执行的任何操作都不会受到旧mCursor
的任何影响。
关于应该使用哪个版本,我个人会坚持使用第一个版本。但是,如果您觉得通过创建oldCursor
来使代码更清晰,那么就继续吧。完全一样。