相关疑难解决方法(0)

从前台服务观察LiveData

我有一个存储库,它包含LiveData对象,并由活动和前台服务通过ViewModel使用.当我开始观察活动时,一切都按预期工作.但是,从服务中观察不会触发观察.这是我使用的代码

class MyService: LifecycleService() {
     lateinit var viewModel: PlayerServiceViewModel

     override fun onCreate() {
          viewModel = MyViewModel(applicationContext as Application)
     }

     override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
          viewModel.getLiveData().observe(this, Observer { data ->
            // Do something with the data
        })
     }
}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它不起作用,我没有收到数据?

android android-service android-livedata

11
推荐指数
1
解决办法
1万
查看次数

java.lang.IllegalStateException:无法在后台线程上调用observeForever

有人可以帮我找到我在哪里错了.我需要不断观察网络数据,并在工作人员发生数据更改时更新UI.请注意,这在升级到androidx之前有效.

这是一个工人类.

class TestWorker(val context: Context, val params: WorkerParameters): Worker(context, params){

    override fun doWork(): Result {
        Log.d(TAG, "doWork called")
        val networkDataSource = Injector.provideNetworkDataSource(context)
        networkDataSource.fetchData(false)

        return Worker.Result.SUCCESS
    }

    companion object {
        private const val TAG = "MY_WORKER"
    }

}
Run Code Online (Sandbox Code Playgroud)

其名称如下:

fun scheduleRecurringFetchDataSync() {
    Log.d("FETCH_SCHEDULER", "Scheduling started")

    val fetchWork = PeriodicWorkRequest.Builder(TestWorker::class.java, 1, TimeUnit.MINUTES)
            .setConstraints(constraints())
            .build()
    WorkManager.getInstance().enqueue(fetchWork)
}

private fun constraints(): Constraints{
    return Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .setRequiresBatteryNotLow(true)
            .build()
}
Run Code Online (Sandbox Code Playgroud)

我还有一个UserDao和UserRepository来获取和存储数据.我正在观察UserRepository中的网络数据,如下所示:

class UserRepository (
    private val userDao: UserDao,
    private val networkDataSource: NetworkDataSource,
    private val appExecutors: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-livedata android-architecture-components android-workmanager

8
推荐指数
2
解决办法
3508
查看次数