一种可能的解决方法是通过使用LiveData的观察者模式来更新UI。跟随以下步骤:
class MyViewModel: ViewModel() {
private val _myLiveData = MutableLiveData()
val myLiveData: LiveData
get() = _myLiveData
fun updateLiveData() {
_myLiveData.value = "new data"
}
}
上述代码是一个简单的示例,它定义了一个名为myLiveData的MutableLiveData,并在updateLiveData方法中更新了它。
class MyActivity: AppCompatActivity() {
private val myViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 观察LiveData并在UI上更新它
myViewModel.myLiveData.observe(this, Observer { newData ->
updateUI(newData)
})
// 点击按钮更新LiveData
button.setOnClickListener {
myViewModel.updateLiveData()
}
}
private fun updateUI(data: String) {
textView.text = data
}
}
在上述代码中,我们观察了来自ViewModel的LiveData,当数据更改时,我们将通过updateUI方法更新UI。另外,我们使用点击事件来在ViewModel中更新LiveData。
通过使用观察者模式,我们可以确保Activity始终观察到来自ViewModel的LiveData的更改,并在UI上进行及时更新。
下一篇:Activity未能及时暂停。