Android LiveData值未从后台发送

Android LiveData值未从后台发送,android,android-livedata,Android,Android Livedata,在阅读找到的LiveData文档时,我遇到了以下部分: 如果生命周期变为非活动状态,它将在再次变为活动状态时接收最新数据。例如,位于后台的活动在返回前台后立即接收最新数据 当我创建一个空白项目来测试这一点时,我发现来自后台的最新数据并没有被发送 onCreate()中的示例代码: 当转到后台并返回时,LiveData保存的最新数据是否应再次发送给观察者 更新: 按要求查看模型代码: class MyViewModel : ViewModel() { val textLiveData =

在阅读找到的
LiveData
文档时,我遇到了以下部分:

如果生命周期变为非活动状态,它将在再次变为活动状态时接收最新数据。例如,位于后台的活动在返回前台后立即接收最新数据

当我创建一个空白项目来测试这一点时,我发现来自后台的最新数据并没有被发送

onCreate()
中的示例代码:

当转到后台并返回时,
LiveData
保存的最新数据是否应再次发送给观察者

更新:

按要求查看模型代码:

class MyViewModel : ViewModel() {

    val textLiveData = MutableLiveData<String>()

    fun buttonClicked() {
        textLiveData.value = "new text value"
    }
}
类MyViewModel:ViewModel(){
val textLiveData=MutableLiveData()
有趣的按钮点击(){
textLiveData.value=“新文本值”
}
}

因此,经过大量调查,我将使用两种场景分享我的答案,以便于理解

情景1:

  • 应用程序位于前台
  • Observer
    LiveData
  • 应用程序进入后台
  • 当从后台返回时,
    LiveData
    发送该值,因为
    观察者已经使用了该值/具有最新的更改
情景2:

  • 应用程序位于前台
  • 观察员从
    LiveData
  • 应用程序进入后台
  • 当应用程序处于后台时,LiveData接收一个新值
  • 由于应用程序仍在后台,并且
    Observer
    未处于活动状态,
    LiveData
    将不会发送值更改
  • 当返回前台并且
    Observer
    再次处于活动状态时,
    LiveData
    会发送自其更改以来的最新值

应该是的,显示您的viewmodel@tyczj我已经添加了ViewModel代码,虽然它非常基本,但如果不调用onCreate并向该LiveData注册了一个全新的观察者,它就不会。另一种获取所需内容的方法是,当你的应用程序处于后台时,如果有什么东西更新了livedata,然后激活。是的。这是正确的行为。此外,若有多个实时数据需要在应用程序出现在前台时发布数据,则它们都会一起发布。确保在您的活动中,您不希望liveData1出现在liveData2之前。在我的情况下,它仍然不起作用,我使用共享viewmodel进行片段导航。FragmentB post值,FragmentA接收更新。A启动B,然后将popBackStack()添加到A。如果我在观察它工作之前添加延迟,假设它只在片段位于前景而不在背景时工作(与场景2相反)
class MyViewModel : ViewModel() {

    val textLiveData = MutableLiveData<String>()

    fun buttonClicked() {
        textLiveData.value = "new text value"
    }
}