Android
Cycle de vie de l'interface utilisateur
Recherche…
Enregistrement de données lors du découpage de la mémoire
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);
}
}
Explication
Alors, qu'est-ce qui se passe ici?
Le système Android s'efforcera toujours d'effacer autant de mémoire que possible. Ainsi, si votre activité est en arrière-plan et qu'une autre activité de premier plan exige son partage, le système Android appellera onTrimMemory()
sur votre activité.
Mais cela ne signifie pas que toutes vos propriétés devraient disparaître. Ce que vous devez faire est de les enregistrer dans un objet Bundle. Les objets groupés sont bien mieux gérés en termes de mémoire. À l'intérieur d'un ensemble, chaque objet est identifié par une séquence de texte unique - dans l'exemple ci-dessus, la variable de valeur entière mArg
est maintenue sous le nom de référence EXAMPLE_ARG
. Et lorsque l'activité est recréée, extrayez vos anciennes valeurs de l'objet Bundle au lieu de les recréer à partir de zéro