在View中添加和删除RealmChangeListener

时间:2016-05-29 08:31:31

标签: java android realm android-lifecycle

在一个将在RecyclerView中使用的视图中执行此操作是否是个好主意?

@Override protected void onAttachedToWindow(){
    super.onAttachedToWindow();
    realmResult.addChangeListener(myChangeListener);
}

@Override protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    realmResult.removeChangeListener(myChangeListener);
}

如果视图在RecyclerView之外使用且未被回收,该怎么办?

1 个答案:

答案 0 :(得分:1)

根据此Activity methods:onCreate() and onDestroy()

onDetachedFromWindow()之后调用

onDestroy(),这意味着您正在调用可能已关闭的RealmResults上的方法。因此,除非您添加更多安全检查,否则可能会崩溃。

这样做是安全的:

@Override protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    if (realmResults.isValid()) {
      realmResult.removeChangeListener(myChangeListener);
    }
}