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