Zerstörung und Neuerstellung der Activity

Umgang mit Daten nach der Zerstörung einer Activity

Wenn sich eine Activity im gestoppten Zustand befindet, kann sie vom System zerstört werden.

Wenn beispielsweise Activity A Activity B startet, wechselt Activity A in den gestoppten Zustand. Falls das System aufgrund von Speichermangel Activity A zerstört und der Benutzer anschließend die Zurück-Taste drückt, um zu Activity A zurückzukehren,

wird Activity A normal angezeigt. In diesem Fall wird jedoch nicht onRestart() aufgerufen, sondern onCreate(), da Activity A neu erstellt wird.

Wenn Activity A temporäre Daten enthielt – beispielsweise Text, der in ein Eingabefeld eingegeben wurde –, gehen diese Daten bei der Zerstörung der Activity verloren.

Wenn dies in unserer App passiert, wirkt sich das stark negativ auf die Benutzererfahrung aus.

Zum Glück stellt Android eine Callback-Methode namens onSaveInstanceState() bereit, die garantiert aufgerufen wird, bevor die Activity zerstört wird.

Damit lässt sich das Problem des Datenverlusts bei temporären Daten lösen.

Die Methode onSaveInstanceState() erhält einen Parameter vom Typ Bundle.

Bundle bietet verschiedene Methoden zum Speichern von Daten, wie zum Beispiel putString() für Zeichenketten und putInt() für Ganzzahlen.

Überschreiben der onSaveInstanceState-Methode

// Deutsch
@Override
protected void onSaveInstanceState(Bundle outState) { // Diese Methode wird aufgerufen, bevor die Activity zerstört wird
    super.onSaveInstanceState(outState);
    outState.putString("user_name", "Frau Pan");
}Code-Sprache: JavaScript (javascript)
// Deutsch
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.e(TAG, "onCreate: ");

    if (savedInstanceState != null) // In onCreate können wir prüfen, ob das Bundle Daten enthält; wenn ja, wurde die Activity zerstört und wird nun neu erstellt
    {
        Log.e(TAG, savedInstanceState.getString("user_name"));
    }
}Code-Sprache: JavaScript (javascript)

Bundle-Daten beim Neuerstellen abrufen

In der Methode onCreate übergibt das System einen Parameter vom Typ Bundle:

// Deutsch
protected void onCreate(Bundle savedInstanceState) {Code-Sprache: JavaScript (javascript)

Bundle-Daten abrufen

// Deutsch
if (savedInstanceState != null) // In onCreate können wir prüfen, ob das Bundle Daten enthält; wenn ja, wurde die Activity zerstört und wird nun neu erstellt
{
    Log.e(TAG, savedInstanceState.getString("user_name"));
}Code-Sprache: JavaScript (javascript)

Zerstörung und Neuerstellung der Activity

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert