Android
UI-Lebenszyklus
Suche…
Speichern von Daten beim Speichern von Daten
public class ExampleActivity extends Activity {
private final static String EXAMPLE_ARG = "example_arg";
private int mArg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
if(savedInstanceState != null) {
mArg = savedInstanceState.getInt(EXAMPLE_ARG);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(EXAMPLE_ARG, mArg);
}
}
Erläuterung
Was passiert also hier?
Das Android-System ist stets bemüht, so viel Speicher wie möglich zu löschen. Wenn Ihre Aktivität also im Hintergrund ist und eine andere Vordergrundaktivität die Freigabe verlangt, ruft das Android-System onTrimMemory()
für Ihre Aktivität auf.
Das bedeutet jedoch nicht, dass alle Ihre Eigenschaften verschwinden sollten. Was Sie tun sollten, ist, sie in einem Bundle-Objekt zu speichern. Bundle-Objekte werden in Bezug auf den Speicher viel besser behandelt. Innerhalb eines Bündels wird jedes Objekt durch eine eindeutige Textsequenz identifiziert - im obigen Beispiel wird die Ganzzahlvariable mArg
unter dem Referenznamen EXAMPLE_ARG
. Wenn die Aktivität wiederhergestellt ist, extrahieren Sie Ihre alten Werte aus dem Bündelobjekt, anstatt sie von Grund auf neu zu erstellen