Aktivitäts-/Prozesslebenszyklus - Wann speichern/laden Daten auf/von der Festplatte

StackOverflow https://stackoverflow.com/questions/1801500

  •  05-07-2019
  •  | 
  •  

Frage

Meine App besteht aus zwei Aktivitäten, A und B. Ich betrachte diese Abfolge von Schritten:

  • Aktivität A wird begonnen.
  • A startet B [A wird angehalten, B läuft].
  • B startet eine Kartenabsicht [A und B werden jetzt beide angehalten].

Jetzt verwendet der Benutzer die Maps -Anwendung und das System entscheidet, dass er mehr Speicher benötigt. Kann das System töten? einziger meiner Aktivitäten für das Gedächtnis oder wird es immer töten alle 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 eine Aktivität in meiner App OnsaveinstanceBundleSate () angerufen wird, rufe ich Daten auf. Jetzt ist die Frage, ob ich in der OnCreate () -Methode einer Aktivität einfach prüfen sollte, ob Daten.mname == NULL, und wenn ja, gehen Sie davon aus, dass die Aktivität von einem Kill -Status zurückkehrt, und versuchen Sie, erneut von der Festplatte aus zu restaurieren? Ich bin mir unklar, wann diese Wiederherstellung erledigt werden sollte, wenn man in Anbetracht der Aktivität A kann oder nicht immer noch am Leben usw. ist oder nicht - und ich möchte nicht korrupten, wenn Aktivität A noch lebt, aber B kommt von einem Killstaat zurück.

Vielen Dank

Vielen Dank

War es hilfreich?

Lösung

Wahrscheinlich ist die beste Lösung, Ihre statischen Daten in einen Dienst zu verschieben. Auf diese Weise können die Daten gespeichert und wiederhergestellt werden, wenn Android den Dienst abschließt, anstatt wenn Android eine der einzelnen Aktivitäten mithilfe der Daten abschließt.

Ohne einen Dienst (oder abwechselnd einen Inhaltsanbieter oder sogar übergeordnete Anwendung zu verwenden, obwohl dies anscheinend verpönt zu sein scheint), müssen Sie diesen Lebenszyklus selbst verwalten, was, wie Sie gesehen haben, schwierig sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top