Junior
Kuidas saame Androidis ajutiselt objekti salvestada?
sobes.tech AI
Vastus AI-lt
Ajutiselt objekti Androidis saab salvestada mitmel viisil, valik sõltub selle elueast ja vajadusest sellele ligi pääseda pärast komponendi lõpetamist:
- Vaate olek: Seotud objektid Vaatega saab salvestada selle olekusse, mis taastatakse uuesti Vaate loomisel (näiteks ekraani pööramisel). Kasutatakse
onSaveInstanceState()jaonRestoreInstanceState(). ViewModel: Parim viis UI-ga seotud andmete salvestamiseks, mis peavad üle elama konfiguratsiooni muutused (näiteks ekraani pööramine).ViewModeleksisteerib kuni ViewModelStoreOwner hävitamiseni.// Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // `ViewModel` klassis class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(vananenud): meetod Activitys, mis võimaldab salvestada juhuslikke objekte, mis jäävad konfiguratsiooni muutuste ajal.getLastNonConfigurationInstance()kasutatakse objekti saamiseks. Vananenud, asendatudViewModel-iga.// Activitys override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Objekti saamine val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationklass: objektide jaoks, mis peavad kestma kogu rakenduse elutsükli jooksul. Tuleb olla ettevaatlik, et selles ei hoitaks liiga palju andmeid.- Ajutised failid: suuremate objektide jaoks, mis ei mahu otse mälu või vajavad lühiajalist salvestamist kettale.
| Meetod | Eluea pikkus | Kasutamine |
|---|---|---|
| Vaate olek | Elu Vaate + taasteolek | Väikesed andmed, mis on seotud Vaatega |
| ViewModel | Elu Activity/Fragment | UI andmed, mis jäävad konfiguratsiooni muutuste ajal |
| onRetainCustomNonConfigurationInstance() | Elu Activity + taasteolek | Juhuslikud objektid (vananenud) |
Application klass |
Rakenduse eluiga | Globaalne objektid |
| Ajutised failid | Arendaja otsustada | Suuremad objektid, ajutine salvestus |