Sobes.tech
Junior

Wie können wir ein Objekt vorübergehend in Android speichern?

sobes.tech KI

Antwort von AI

Es ist möglich, ein Objekt in Android vorübergehend auf verschiedene Weisen zu speichern, die Wahl hängt von seiner Lebensdauer und der Notwendigkeit des Zugriffs danach ab:

  • View-Zustand: Mit View verbundene Objekte können in seinem Zustand gespeichert werden, der beim Neuerstellen der View wiederhergestellt wird (z.B. bei Bildschirmrotation). Es werden onSaveInstanceState() und onRestoreInstanceState() verwendet.
  • ViewModel: Die beste Methode, um UI-bezogene Daten zu speichern, die Konfigurationsänderungen von Activity/Fragment überleben sollen (z.B. Bildschirmrotationen). ViewModel existiert bis zum Zerstören des ViewModelStoreOwner.
    // In der Activity/Fragment
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // Im ViewModel
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (veraltet): Methode in der Activity zum Speichern beliebiger Objekte, die Konfigurationsänderungen überleben. getLastNonConfigurationInstance() wird verwendet, um das Objekt zu erhalten. Veraltet zugunsten von ViewModel.
    // In der Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Objekt erhalten
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Application Klasse: Für Objekte, die während des gesamten Lebenszyklus der Anwendung leben sollen. Mit Vorsicht verwenden, um nicht zu viele Daten zu speichern.
  • Temporäre Dateien: Für größere Objekte, die nicht direkt in den Speicher passen oder kurzfristig auf der Festplatte gespeichert werden müssen.
Methode Lebensdauer Verwendung
View-Zustand Lebensdauer der View + Änderungen Kleine Daten, die mit der View verbunden sind
ViewModel Lebensdauer der Activity/Fragment UI-Daten, die Konfigurationsänderungen überleben
onRetainCustomNonConfigurationInstance() Lebensdauer der Activity + Änderungen Beliebige Objekte (veraltet)
Application Klasse Lebensdauer der Anwendung Globale Objekte
Temporäre Dateien Vom Entwickler festgelegt Große Objekte, temporärer Speicher