Android
UI: s livscykel
Sök…
Spara data vid minnesklippning
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);
}
}
Förklaring
Så, vad händer här?
Android-systemet strävar alltid efter att rensa så mycket minne som det kan. Så om din aktivitet är i bakgrunden och en annan förgrundsaktivitet kräver sin andel kommer Android-systemet att onTrimMemory()
på din aktivitet.
Men det betyder inte att alla dina egenskaper borde försvinna. Vad du bör göra är att spara dem i ett buntobjekt. Paketobjekt är mycket bättre hanterade minnesvisa. Inuti ett paket identifieras varje objekt med unik textsekvens - i exemplet ovan är heltalets variabla mArg
kvar under referensnamnet EXAMPLE_ARG
. Och när aktiviteten återskapas, extrahera dina gamla värden från Bundle-objektet istället för att återskapa dem från grunden
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow