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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow