如果有任何更改,livedata如何将数据发送到活动

嗨,我正在阅读这个LiveDataObserver例子https://code.tutsplus.com/tutorials/introduction-to-android-architecture–cms-28749

MainActivityViewModel.kt

 class MainActivityViewModel : ViewModel() { private var notes: MutableLiveData<List<String>>? = null fun getNotes(): LiveData<List<String>> { if (notes == null) { notes = MutableLiveData<List<String>>() loadNotes() } return notes!! } private fun loadNotes() { // do async operation to fetch notes } } 

MainActivity.kt

 class MainActivity : LifecycleActivity(), AnkoLogger { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val viewModel = ViewModelProviders.of(this) .get(MainActivityViewModel::class.java) viewModel.getNotes().observe( this, Observer { notes -> info("notes: $notes") } ) } } 

如果Notes中有任何更改(新的或删除), LiveData如何将数据发送到MainActivity 。 我看到活动正在调用viewModel.getNotes() ,它可能不会被调用一次onCreate方法完成。

LiveData不发送任何东西到MainActivity ,它是“发送”到传递给observe方法的Observer 。 这个ObserverMainActivity有一个引用,可以调用它的方法。