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()undonRestoreInstanceState()verwendet. ViewModel: Die beste Methode, um UI-bezogene Daten zu speichern, die Konfigurationsänderungen von Activity/Fragment überleben sollen (z.B. Bildschirmrotationen).ViewModelexistiert bis zum Zerstören desViewModelStoreOwner.// 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 vonViewModel.// In der Activity override fun onRetainCustomNonConfigurationInstance(): Any? { return myObjectToRetain } // Objekt erhalten val retainedObject = lastCustomNonConfigurationInstance as? MyDataApplicationKlasse: 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 |