使用Transformations.map

时间:2020-05-15 10:27:45

标签: android kotlin transformation android-lifecycle android-livedata

我正在观察liveData以便在ViewModel中使用 observeForever 进行一些查询,

  query.observeForever {
      //
    }

逻辑工作正常,但是我无法在 onCleared 中删除观察者,因为我无法从viewModel访问生命周期,我不应该,我尝试过Transformation.map

 Transformations.map(query){
//
    }

未能观察到更改。有关如何使用Transformation.map收听实时数据更改并对其采取行动的任何建议

1 个答案:

答案 0 :(得分:0)

您可以像这样使您的视图模型扩展LifecycleObserver-

class MyViewModel() : LifecycleObserver {
   val queryObserver = Observer {
     // do stuff
   }

   @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
   fun onResumed() {
    query.observeForever(queryObserver)
   }

   @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
   fun onPasued() {
    query.removeObserver(queryObserver)
   }
}

别忘了在活动中添加getLifecycle().addObserver(mViewModel)