具有实时数据的协程感知ViewModel在Lifecycle Service中不起作用

时间:2020-04-07 23:23:29

标签: android-lifecycle androidx android-livedata kotlin-coroutines android-components

我第一次使用协程感知的ViewModel,因此如果这是一个基本问题,请原谅我。

我有一个ViewModel,它正在进行API调用并在liveData中发出结果。

MainViewModel.kt 

    val retailersLiveData = liveData(Dispatchers.IO) {
        val retailers = repository.getRetailers()
        emit(Resource.loading(null))
        emit(retailers)
    }

我还有一个LifecycleService,它正在观察liveData。

AvailabilityService.kt

    override fun onCreate() {
        super.onCreate()
        viewModel = MainViewModel()
    }

    fun getRetailers() {
        viewModel.retailersLiveData.observe(this, Observer {
            when (it.status) {
                Status.SUCCESS -> {
                    it.data?.retailers?.forEach {
                        //do something
                    }
                    Log.d("retailers", ""+it.data)
                }
                Status.ERROR -> { Log.e("error retailers", ""+it.message) }
                Status.LOADING -> {}
            }
        })
    }

我从没从服务中获得实时数据的发射值。我试图了解我可能做错了什么。

0 个答案:

没有答案