可以在服务中使用 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 {...}
并在不提及服务名称的情况下访问它
我在服务中使用 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 {...}
并在不提及服务名称的情况下访问它