abstract class BaseVMActivity<VM : BaseViewModel> : BaseActivity(), LifecycleObserver {
lateinit var mViewModel: VM
override fun onCreate(savedInstanceState: Bundle?) {
initVM()
super.onCreate(savedInstanceState)
startObserve()
}
private fun initVM() {
providerVMClass()?.let {
mViewModel = ViewModelProviders.of(this).get(it)
mViewModel.let(lifecycle::addObserver)
}
}
open fun providerVMClass(): Class<VM>? = null
open fun startObserve() {
mViewModel.mException.observe(this, Observer { it?.let { onError(it) } })
}
open fun onError(e: Throwable) {}
override fun onDestroy() {
mViewModel.let {
lifecycle.removeObserver(it)
}
super.onDestroy()
}
}
Kotlin MVVM BaseVMActivity
最新推荐文章于 2024-05-26 10:46:00 发布