Junior
Ako môžeme dočasne uložiť objekt v Android?
sobes.tech AI
Odpoveď od AI
Dočasné uloženie objektu v Android je možné niekoľkými spôsobmi, výber závisí od jeho doby života a potreby prístupu po ukončení komponentu:
- Stav View: Súvisiace objekty s View možno ukladať do jeho stavu, ktorý sa obnoví pri opätovnom vytvorení View (napríklad pri otočení obrazovky). Používa sa
onSaveInstanceState()aonRestoreInstanceState(). ViewModel: Najlepší spôsob na uloženie údajov súvisiacich s UI, ktoré musia prežiť zmeny konfigurácie Activity/Fragment (napríklad otočenie obrazovky).ViewModelexistuje do zničenia ViewModelStoreOwner.// V Activity/Fragment val viewModel = ViewModelProvider(this).get(MyViewModel::class.java) // V ViewModel class MyViewModel : ViewModel() { var myObject: MyData? = null }onRetainCustomNonConfigurationInstance()(zastaralé): Metóda v Activity na uloženie ľubovoľných objektov, ktoré prežijú zmenu konfigurácie.getLastNonConfigurationInstance()sa používa na získanie objektu. Zastaralé je v prospechViewModel.// V Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Získanie objektu val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationtrieda: Pre objekty, ktoré majú žiť počas celého životného cyklu aplikácie. Treba byť opatrný, aby sa v nej neukladalo príliš veľa dát.- Dočasné súbory: Pre väčšie objekty, ktoré sa nezmestia priamo do pamäte alebo vyžadujú uloženie na krátky čas na disku.
| Metóda | Doba života | Použitie |
|---|---|---|
| Stav View | Život View + opätovný stav | Malé údaje, ktoré súvisia s View |
| ViewModel | Život Activity/Fragment | Dáta UI, ktoré prežijú zmeny konfigurácie |
| onRetainCustomNonConfigurationInstance() | Život Activity + opätovný stav | Ľubovoľné objekty (zastaralé) |
| Application trieda | Život aplikácie | Globálne objekty |
| Dočasné súbory | Určuje vývojár | Veľké objekty, dočasné úložisko |