So speichern Sie ein Android-Aktivitäts-Status mit speichern der Instanz Staat?

Habe ich gearbeitet, auf der Android SDK-Plattform, und es ist ein wenig unklar, wie, eine Anwendung zu speichern ist-Zustand. So gegeben, diese kleine re-tooling die "Hello, Android" Beispiel:

package com.android.hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {

  private TextView mTextView = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mTextView = new TextView(this);

    if (savedInstanceState == null) {
       mTextView.setText("Welcome to HelloAndroid!");
    } else {
       mTextView.setText("Welcome back.");
    }

    setContentView(mTextView);
  }
}

Dachte ich, es wäre genug für den einfachsten Fall, aber es reagiert immer mit der ersten Nachricht, egal, wie ich zu navigieren Weg von der app.

Ich bin sicher, die Lösung ist so einfach wie das überschreiben onPause oder so, aber ich habe schon gestöbert entfernt in der Dokumentation für 30 Minuten oder so und habe nicht gefunden was offensichtlich ist.

  • Wann ist savedInstanceState == null und wenn es nicht null ist ?
  • Sie sind explizit die Zerstörung Ihrer Aktivität, indem Sie - wie Sie sagte, verlassen Sie, wie, indem Sie back drücken. Eigentlich ist das Szenario, in dem diese "savedInstanceState" verwendet wird, ist bei Android zerstört, die Ihre Aktivität für die Erholung. Für Herzen lag: Wenn Sie ändern Sie die Sprache Ihres Telefons, während die Aktivität ausgeführt wurde (und damit die verschiedenen Ressourcen aus dem Projekt geladen werden). Ein weiteres sehr häufiges Szenario ist, wenn Sie Ihr Telefon drehen auf die Seite, so dass die Aktivität neu erstellt und angezeigt, in der Landschaft.
  • Auf die zweite Nachricht, aktivieren Sie "Don' T keep activities" in den dev-Optionen. Drücken Sie eine home-Taste und zurück von recents.
  • dies ist sehr hilfreich developer.android.com/training/basics/activity-lifecycle/...
  • Sie können es tun mit : onSaveInstanceState(Bundle savedInstanceState)
  • Ich denke also, dass jetzt keine Notwendigkeit des Sparens savedInstance wenn Sie life-cycle-aware-Architektur Komponenten wie ViewModel-das ist die bessere Wahl für die Lösung Thema wie die Konfigurationen ändern Problem.

InformationsquelleAutor Bernard | 2008-09-30
Schreibe einen Kommentar