Android
UI levenscyclus
Zoeken…
Gegevens opslaan bij het bijsnijden van geheugen
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);
}
}
Uitleg
Wat is hier aan de hand?
Het Android-systeem zal er altijd naar streven zoveel mogelijk geheugen te wissen. Dus als uw activiteit op de achtergrond staat en een andere activiteit op de voorgrond zijn deel eist, zal het Android-systeem beroep doen onTrimMemory()
op uw activiteit.
Maar dat betekent niet dat al uw eigenschappen moeten verdwijnen. Wat u moet doen, is ze opslaan in een bundelobject. Bundelobjecten worden qua geheugen veel beter behandeld. Binnen een bundel wordt elk object geïdentificeerd door een unieke tekstreeks - in het bovenstaande voorbeeld wordt de variabele mArg
gehele mArg
vastgehouden onder referentienaam EXAMPLE_ARG
. En wanneer de activiteit opnieuw is gemaakt, haalt u uw oude waarden uit het Bundle-object in plaats van ze helemaal opnieuw te maken