在视图中添加和删除 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);
    }
}