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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow