Cómo livedata envía los datos a la actividad si hay algún cambio

Hola, estoy leyendo este ejemplo de LiveData and Observer 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") } ) } } 

Cómo LiveData está enviando datos a MainActivity si hay cambios en las notas (nuevas o eliminadas). Veo que la actividad está llamando a viewModel.getNotes() que puede que no se llame una vez que finalice el método de Create.