在视图中添加和删除 RealmChangeListener
Add and remove RealmChangeListener in View
在将要在 RecyclerView
中使用的视图中执行此操作是个好主意吗?
@Override protected void onAttachedToWindow(){
super.onAttachedToWindow();
realmResult.addChangeListener(myChangeListener);
}
@Override protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
realmResult.removeChangeListener(myChangeListener);
}
如果视图在 RecyclerView
之外使用并且没有被回收怎么办?
据此Activity methods:onCreate() and onDestroy()
onDetachedFromWindow()
在 onDestroy()
之后调用,这意味着您正在调用可能已关闭的 RealmResults 上的方法。因此,除非您添加更多安全检查,否则它可能会崩溃。
这样做是安全的:
@Override protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
if (realmResults.isValid()) {
realmResult.removeChangeListener(myChangeListener);
}
}
在将要在 RecyclerView
中使用的视图中执行此操作是个好主意吗?
@Override protected void onAttachedToWindow(){
super.onAttachedToWindow();
realmResult.addChangeListener(myChangeListener);
}
@Override protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
realmResult.removeChangeListener(myChangeListener);
}
如果视图在 RecyclerView
之外使用并且没有被回收怎么办?
据此Activity methods:onCreate() and onDestroy()
onDetachedFromWindow()
在 onDestroy()
之后调用,这意味着您正在调用可能已关闭的 RealmResults 上的方法。因此,除非您添加更多安全检查,否则它可能会崩溃。
这样做是安全的:
@Override protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
if (realmResults.isValid()) {
realmResult.removeChangeListener(myChangeListener);
}
}