总结:
- Lifecycle原理简单来讲,被观察患者被添加到
LifecycleRegistry
,然后将此类与ReportFragment绑定,利用reportFragment生命周期的变化,去分发通知LifecycleRegistry
状态的变更,然后去通知每位被观察者 - LiveData,持有
LifecycleOwner
的引用,当调用observe的时候会,作为被观察者注入到lifecycle中,从而具备了生命周期的能力,然后判断是否是活跃状态,然后调用处理Ui的回调 - viewModel 具有生命周期能力和保存数据的能力,当activity/fragment销毁的时候,viewModel会在lifecycle的生命周期回调中自动调clear销毁;保存数据的能力是因为,viewModel都保存在viewModelStore中,每次viewModel创建的时候,都会检查viewModelStore中是否存在,存在则不会再次创建;对于旋转屏幕保存数据,
onRetainNonConfigurationInstance
保存数据getLastCustomNonConfigurationInstance
恢复数据,所以在此创建viewModel的时候,会查缓存,有就直接用了