可以在服务中使用 LiveData 对象吗?

Is it okay to use LiveData objects inside a service?

我在服务中使用 Companion 对象将我的 LiveData 公开给片段。这可以使用吗,还是会导致我出现内存泄漏等问题?

为我服务:

  companion object {
    val timeLeftInSeconds = MutableLiveData<Long>(0)}

在我的片段中:

 LockoutService.timeLeftInSeconds.observe(viewLifecycleOwner, Observer {...})

不,这很好,因为伴随对象有点像静态字段,但我强烈建议改用存储库,因为它会增加代码的可读性并使其更健壮。像

object AppRepository{
    val timeLeftInSeconds = MutableLiveData<Long>(0)}
}

在片段中

AppRepository.timeLeftInSeconds.observe(viewLifecycleOwner

不,这完全没问题,因为伴生对象就像 java 中的静态属性,并不绑定到您在其中定义它们的 class。 你也可以把它放在同一个文件中,在你的服务之外

LockoutService.kt

val timeLeftInSeconds = MutableLiveData<Long>(0)}
class LockoutService {...}

并在不提及服务名称的情况下访问它