Ricerca…


Salvataggio dei dati sul taglio della memoria

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);
    }
}

Spiegazione

Quindi, cosa sta succedendo qui?

Il sistema Android cercherà sempre di cancellare più memoria possibile. Quindi, se la tua attività è in background e un'altra attività in primo piano richiede la sua condivisione, il sistema Android chiamerà onTrimMemory() sulla tua attività.

Ma ciò non significa che tutte le tue proprietà dovrebbero svanire. Quello che dovresti fare è salvarli in un oggetto Bundle. Gli oggetti bundle sono gestiti molto meglio dalla memoria. All'interno di un fascio ogni oggetto è identificato da una sequenza di testo univoca - nell'esempio sopra la variabile del valore intero mArg è tenuta sotto il nome di riferimento EXAMPLE_ARG . E quando l'attività viene ricreata estrai i tuoi vecchi valori dall'oggetto Bundle invece di ricrearli da zero



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow