使用Transformations.map的watchForever的替代方法

问题描述 投票:0回答:1

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

  query.observeForever {
      //
    }

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

 Transformations.map(query){
//
    }

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

android kotlin transformation android-lifecycle android-livedata
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.