您好我正在阅读LiveData
和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")
}
)
}
}
如果备注中有任何更改(新增或删除),LiveData
如何将数据发送到MainActivity
。我看到活动正在调用viewModel.getNotes()
,一旦onCreate方法完成,就不会调用它。
答案 0 :(得分:2)
LiveData
没有向MainActivity
发送任何内容,而是“发送”到传递给Observer
方法的observe
。此Observer
引用了MainActivity
创建它的位置,并可以调用其方法。