當前位置:編程學習大全網 - 遊戲軟體 - Jetpack學習之----ViewModel

Jetpack學習之----ViewModel

官方學習文檔

ViewModel就是存儲頁面相關的數據,並將這些數據和Activity、Fragment等有生命周期相關的組件相關聯,賦予數據生命周期。

特點:

ViewModel的生命周期

在viewModel對象創建時開始,壹直到他所關聯的界面控制器銷毀時才銷毀,這就說明了即使發生了橫豎屏切換,界面相關的數據也是壹直存在並且不受橫豎屏切換的影響。

通常我們是在Actvity的onCreate()方法中來創建ViewModel對象,該ViewModel對象會壹直在內存中,直到這個Activity銷毀時才釋放資源。

從上面ViewModel的工作原理可以得知:

1、ViewModel 壹旦創建好了,就會壹直保存到當前界面控制器(Activity 、Fragment等)銷毀時才會釋放資源;

2、不同的界面控制器,ViewModel 的對象時存在不同的Hashmap中的,他們也是不同的對象;局部單例;

3、要做到全局單例ViewModel對象,可以將ViewModel放到Application中去;

接下來從源碼角度來分析壹下原理:

在構建Activity的對象時,在其父類ComponentActivity.java中實現了接口ViewModelStoreOwner,在其實現方法中生成ViewModelStore對象

在界面控制器的構造函數中,就添加了對生命周期的觀察者,而當觀察者收到當前的界面控制器的生命周期是Lifecycle.Event.ON_DESTROY時,就會將mViewModelStore對象map中所有保存的viewModel清理掉,這樣來達到釋放資源。

這裏只處理了ON_DESTROY的生命周期狀態,那麽也就說明了在ViewModel對象實例創建成功後,不管界面控制器(如Activity)的生命周期(除ON_DESTROY外)如何發生變化,ViewModel都不會被清理掉。

從這裏看出來ViewModel對應key的唯壹性

ViewModel工作原理的核心技術點:

觀察者模式、工程模式、反射、Hashmap數據結構

ViewModel在MVVM架構模型中,與DataBinding結合使用,會讓妳有起飛的感覺。後續會進壹步加深使用。本篇僅以學會使用、了解原理為重點。

  • 上一篇:4399遊戲大廳電腦版能直接玩嗎
  • 下一篇:人體藝術為什麽會在油畫中得以盡情盡興展現?
  • copyright 2024編程學習大全網