为什么 LiveData 观察器在设置观察器之前更改值时执行?

Why LiveData observer execute when value changed before set observer?

我这样测试LiveData

// MainActivity.kt
class MainActivity : AppCompatActivity() {
    
    val testViewModel: TestViewModel by viewModels()
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        testViewModel.testLiveData.value = true
        testViewModel.testLiveData.observe(this) {
            println("Hello")
        }
    }
}
// TestViewModel.kt
class TestViewModel : ViewModel(){
    val testLiveData = MutableLiveData<Boolean>()
    
}

我认为.... (livedata).observe 意思是开始观察 liveData 值的变化。
我不认为设置观察者之前更改的值是不可观察的。
但是,它打印 hello.....
我是不是对实时数据观察者有误解?

当您开始观察一个 LiveData 时,如果 LiveData 已经有一个值,它会立即将该值重播给观察者。这是设计使然,因为 LiveData 通常位于比视图寿命更长的 ViewModel 中。例如,当屏幕旋转时,将重新创建所有视图并重新开始观察。所有视图都将使用 LiveData 的最新值进行更新。如果它不这样做,那么当屏幕旋转并重新创建 Activities/Fragments 时,它们将只是坐在那里,没有什么可观察的,这违背了使用 ViewModel 来保留比视图更长寿的状态的目的。