Android
UI Lifecycle
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