Sobes.tech
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() a onRestoreInstanceState().
  • 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). ViewModel existuje 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 prospech ViewModel.
    // V Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Získanie objektu
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Application trieda: 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