2 Stimmen

Lebenszyklus von Aktivitäten/Prozessen - wann werden Daten auf/von der Festplatte gespeichert/geladen

Meine Anwendung besteht aus zwei Aktivitäten, A und B. Ich erwäge diese Schrittfolge:

  • Aktivität A wird gestartet.
  • A startet B [A ist pausiert, B läuft].
  • B startet ein Map Intent [A und B sind jetzt beide pausiert].

Der Benutzer verwendet nun die Kartenanwendung und das System entscheidet, dass es mehr Speicher benötigt. Kann das System nur einer meiner Aktivitäten für die Erinnerung, oder wird es immer töten tous Aktivitäten in einem " Prozess " in dieser Situation?

Beide Aktivitäten teilen einige statische Daten wie:

class Data {
    public static String mName;
    public void save() {
      // write to file: mName;
    }
    public void load() {
      // mName = read from file;
    }
}

ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);

Wenn also eine Aktivität in meiner App onSaveInstanceBundleSate() aufgerufen wird, rufe ich Data.save() auf, um sie auf die Festplatte zu schreiben. Die Frage ist nun, ob ich in der onCreate()-Methode einer Activity einfach prüfen sollte, ob Data.mName == null ist, und wenn ja, davon ausgehen sollte, dass die Activity aus einem Kill-Status zurückkehrt, und erneut versuchen sollte, von der Festplatte wiederherzustellen? Mir ist nicht klar, wann diese Wiederherstellung durchgeführt werden sollte, da Activity A noch aktiv sein kann oder nicht usw. - und ich möchte den Status nicht beschädigen, wenn Activity A noch aktiv ist, aber B aus einem Kill-Status zurückkommt,

Danke

Danke

1voto

emmby Punkte 98109

Die beste Lösung ist wahrscheinlich, Ihre statischen Daten in einen Dienst zu verschieben. Auf diese Weise können die Daten gespeichert und wiederhergestellt werden, wenn Android den Dienst beendet, und nicht, wenn Android eine der einzelnen Aktivitäten, die die Daten verwenden, herunterfährt.

Ohne die Verwendung eines Dienstes (oder alternativ eines Inhaltsanbieters oder sogar einer übergeordneten Anwendung, obwohl das verpönt zu sein scheint), müssen Sie diesen Lebenszyklus selbst verwalten, was, wie Sie gesehen haben, schwierig sein kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X