val viewModel: MainViewModel by viewModels {MainViewModelProvider()}
@Suppress("UNCHECKED_CAST")class MainViewModelProvider : ViewModelProvider.Factory{overridefun<T : ViewModel?>create(modelClass: Class<T>): T {returnMainViewModel()as T
}}
直接创建
val viewModel =ViewModelProvider(this).get(MainViewModel::class.java)
Fragment中共享Activity(或者上级Fragment)的ViewModel
val viewModel =ViewModelProvider(requireActivity()).get(LoginViewModel::class.java)val viewModel =ViewModelProvider(requireParentFragment()).get(LoginViewModel::class.java)
private void considerNotify(ObserverWrapper observer){//如果持有者是不可见状态if(!observer.mActive){return;}// Check latest state b4 dispatch. Maybe it changed state but we didn't get the event yet.//// we still first check observer.active to keep it as the entrance for events. So even if// the observer moved to an active state, if we've not received that event, we better not// notify for a more predictable notification order.if(!observer.shouldBeActive()){
observer.activeStateChanged(false);return;}if(observer.mLastVersion >= mVersion){return;}
observer.mLastVersion = mVersion;//改变值
observer.mObserver.onChanged((T) mData);}