在将要在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);
    }
}

07-28 01:13