Sobes.tech
Junior

Jak můžeme dočasně uložit objekt v Androidu?

sobes.tech AI

Odpověď od AI

Je možné dočasně uložit objekt v Androidu několika způsoby, volba závisí na jeho životnosti a potřebě k němu přistupovat po ukončení komponenty:

  • Stav View: Soubory spojené s View lze uložit do jeho stavu, který se obnoví při znovuvytvoření View (například při otáčení obrazovky). Používají se onSaveInstanceState() a onRestoreInstanceState().
  • ViewModel: Nejlepší způsob, jak uložit data související s UI, která musí přežít změny konfigurace Activity/Fragment (například otáčení obrazovky). ViewModel existuje do doby, než je zničeno ViewModelStoreOwner.
    // V Activity/Fragment
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // V ViewModel
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (zastaralé): Metoda v Activity pro uložení libovolných objektů, které přežijí změnu konfigurace. getLastNonConfigurationInstance() se používá k získání objektu. Zastaralé ve prospěch ViewModel.
    // V Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Získání objektu
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Třída Application: Pro objekty, které mají žít po celou dobu životnosti aplikace. Mělo by se používat opatrně, aby se neukládalo příliš mnoho dat.
  • Dočasné soubory: Pro větší objekty, které se nevejdou přímo do paměti nebo vyžadují krátkodobé uložení na disku.
Metoda Doba života Použití
Stav View Život View + znovuvytvoření Malá data spojená s View
ViewModel Život Activity/Fragmentu Data UI, která přežijí změny konfigurace
onRetainCustomNonConfigurationInstance() Život Activity + změny Libovolné objekty (zastaralé)
Třída Application Život aplikace Globální objekty
Dočasné soubory Určuje vývojář Velké objekty, dočasné úložiště