Sobes.tech
Junior

Jak tymczasowo przechować obiekt w Androidzie?

sobes.tech AI

Odpowiedź od AI

Można tymczasowo przechowywać obiekt w Android na kilka sposobów, wybór zależy od jego okresu życia i potrzeby dostępu do niego po zakończeniu działania komponentu:

  • Stan widoku: Obiekty powiązane z widokiem można zapisywać w jego stanie, który jest przywracany podczas ponownego tworzenia widoku (np. podczas obrotu ekranu). Używa się onSaveInstanceState() i onRestoreInstanceState().
  • ViewModel: Najlepszy sposób na przechowywanie danych związanych z UI, które muszą przetrwać zmiany konfiguracji Activity/Fragment (np. obroty ekranu). ViewModel istnieje do momentu zniszczenia ViewModelStoreOwner.
    // W Activity/Fragment
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // W ViewModel
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (przestarzałe): Metoda w Activity do zapisywania dowolnych obiektów, które przetrwają zmianę konfiguracji. getLastNonConfigurationInstance() służy do pobrania obiektu. Przestarzałe na rzecz ViewModel.
    // W Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Pobranie obiektu
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Klasa Application: Dla obiektów, które mają żyć przez cały cykl życia aplikacji. Należy używać ostrożnie, aby nie przechowywać zbyt wielu danych.
  • Tymczasowe pliki: Dla większych obiektów, które nie mieszczą się bezpośrednio w pamięci lub wymagają przechowywania na krótki czas na dysku.
Metoda Okres życia Użycie
Stan widoku Życie widoku + ponowne tworzenie Małe dane powiązane z widokiem
ViewModel Życie Activity/Fragmentu Dane UI, które przetrwają zmiany konfiguracji
onRetainCustomNonConfigurationInstance() Życie Activity + zmiany Dowolne obiekty (przestarzałe)
Klasa Application Życie aplikacji Obiekty globalne
Tymczasowe pliki Określa programista Duże obiekty, tymczasowe przechowywanie