ViewModel 負(fù)責(zé)管理UI組件(activity/fragment)相關(guān)的數(shù)據(jù)藏姐,還可以負(fù)責(zé)UI組件間的通信
1倘潜, ViewModel 的生命周期?
? ?ViewModel的生命周期根傳遞給 ViewModleProvider 的LifeCycle決定, 一般初始化代碼是:ViewModelProviders.of(this).get(xxxViewModel.class)來獲取, this 一般為 Activity 或 Fragment 畏线。
? ?ViewModel 始終處在內(nèi)存中朵夏, 直到LifeCycle 徹底結(jié)束。?
? ?對Activity 辣吃,只會在第一次調(diào)用onCreate()時創(chuàng)建动遭, 到調(diào)用finish時候,回調(diào)到 onDestory() 方法時銷毀神得,對Fragment厘惦, 到調(diào)用的detached時銷毀。銷毀可以在? onCleared中處理資源釋放哩簿。
2绵估, ViewModel中不能引用任何View對象, 或者任何引用了Activity的Context的對象卡骂。如果需要Application的Context的話国裳,可以繼承 AndroidViewModel 。
3全跨,Activity 間Fragment 間通信:
? ?ViewModelProviders.of(getActivity()).get(xxxViewModel.class) 返回相同的ViewModel 實例缝左, 作用域是activity