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()aonRestoreInstanceState(). 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).ViewModelexistuje do doby, než je zničenoViewModelStoreOwner.// 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ěchViewModel.// 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ě |