Préserver l'état d'activité dans Android avec Enregistrer l'état de l'instance

Préserver l'état d'activité dans Android avec Enregistrer l'état de l'instance
Préserver l'état d'activité dans Android avec Enregistrer l'état de l'instance

Comprendre la préservation de l’état d’activité

Enregistrer l'état d'une activité dans Android peut être quelque peu déroutant, en particulier pour les développeurs qui découvrent la plate-forme Android SDK. L'exemple fourni ici montre une application simple qui accueille les utilisateurs différemment selon que c'est la première fois qu'ils ouvrent l'application ou s'ils reviennent.

Cependant, l'implémentation actuelle affiche toujours le message d'accueil initial, quelle que soit la navigation en dehors de l'application. Cet article vous guidera à travers les étapes nécessaires pour enregistrer et restaurer correctement l'état d'une activité à l'aide de la méthode `onSaveInstanceState`.

Commande Description
onSaveInstanceState(Bundle outState) Cette méthode est appelée avant la destruction d'une activité pour enregistrer l'état des composants de l'interface utilisateur.
putString(String key, String value) Enregistre une valeur de chaîne dans le Bundle avec une clé spécifiée pour une récupération ultérieure.
getString(String key) Récupère une valeur de chaîne du Bundle à l’aide de la clé spécifiée.
onRestoreInstanceState(Bundle savedInstanceState) Cette méthode est appelée après onStart() pour restaurer l'état de l'interface utilisateur à partir du bundle précédemment enregistré.
setContentView(View view) Définit le contenu de l'activité sur une vue explicite, ce qui en fait la racine de la mise en page.
TextView.setText(String text) Définit le texte à afficher par TextView.
super.onCreate(Bundle savedInstanceState) Appelle la méthode onCreate() de la superclasse, initialisant l'activité.

Comment enregistrer l'état d'activité sur Android

Dans les scripts fournis, nous explorons comment enregistrer l'état d'une activité à l'aide du onSaveInstanceState(Bundle outState) méthode dans le développement Android. Le premier script montre la création d'une activité qui affiche un message de bienvenue, qui change selon que c'est la première fois que l'utilisateur ouvre l'application ou s'il s'en est éloigné et est revenu. La partie critique du script consiste à sauvegarder l'état du TextView en utilisant le onSaveInstanceState méthode. Lorsque l'activité est sur le point d'être détruite, cette méthode est appelée pour sauvegarder l'état des composants de l'interface utilisateur. Nous stockons le texte affiché dans le TextView en utilisant le putString(String key, String value) méthode, qui associe une valeur de chaîne à une clé spécifiée dans le Bundle.

Lors de la recréation de l'activité, le onCreate(Bundle savedInstanceState) La méthode vérifie s'il existe un état d'instance enregistré. Si c'est le cas, il récupère le texte précédemment stocké à l'aide du getString(String key) méthode et la remet à la TextView. Cela garantit que l’utilisateur voit le même message qu’il a vu avant de s’éloigner. Dans le deuxième script, nous affinons encore cette approche en ajoutant le onRestoreInstanceState(Bundle savedInstanceState) méthode, qui est appelée après dix pour restaurer l'état de l'interface utilisateur à partir de l'état précédemment enregistré Bundle. Cette méthode définit directement le texte enregistré sur le TextView, garantissant que l’état de l’interface utilisateur est cohérent et préservé de manière transparente lors des redémarrages d’activité.

Implémentation de la sauvegarde d'état dans les activités Android

Développement Java-Android

package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    private TextView mTextView = null;
    private static final String TEXT_VIEW_KEY = "textViewKey";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mTextView = new TextView(this);

        if (savedInstanceState == null) {
            mTextView.setText("Welcome to HelloAndroid!");
        } else {
            mTextView.setText(savedInstanceState.getString(TEXT_VIEW_KEY));
        }
        setContentView(mTextView);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(TEXT_VIEW_KEY, mTextView.getText().toString());
    }
}

Assurer la persistance des données dans les applications Android

Développement Java-Android

package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    private TextView mTextView = null;
    private static final String TEXT_VIEW_STATE = "textViewState";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mTextView = new TextView(this);

        if (savedInstanceState != null) {
            mTextView.setText(savedInstanceState.getString(TEXT_VIEW_STATE));
        } else {
            mTextView.setText("Welcome to HelloAndroid!");
        }
        setContentView(mTextView);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(TEXT_VIEW_STATE, mTextView.getText().toString());
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        mTextView.setText(savedInstanceState.getString(TEXT_VIEW_STATE));
    }
}

Garantir la persistance de l'état lors des modifications de configuration

Lors du développement d'applications Android, la gestion de l'état d'activité lors des modifications de configuration, telles que les rotations d'écran, est cruciale. Les modifications de configuration entraînent la destruction et la recréation des activités, entraînant la perte des états temporaires de l'interface utilisateur si elles ne sont pas gérées correctement. En utilisant le onSaveInstanceState(Bundle outState) méthode, les développeurs peuvent enregistrer les informations nécessaires sur l’état de l’interface utilisateur. Cette méthode est appelée avant la destruction de l'activité, permettant aux développeurs de stocker des paires clé-valeur dans un Bundle, préservant l'état pour une restauration ultérieure.

De plus, il est essentiel de comprendre le rôle du ViewModel classe à partir des composants d'architecture d'Android. ViewModel est conçu pour stocker et gérer les données liées à l'interface utilisateur d'une manière soucieuse de leur cycle de vie, permettant aux données de survivre aux changements de configuration. En utilisant ViewModel, les développeurs peuvent dissocier les contrôleurs d'interface utilisateur des données qu'ils gèrent, ce qui rend l'application plus robuste et plus facile à maintenir. Combinaison ViewModel avec onSaveInstanceState fournit une solution complète pour gérer efficacement l’état de l’activité.

Foire aux questions sur la gestion de l'état d'activité

  1. Quel est le but de onSaveInstanceState?
  2. Le onSaveInstanceState La méthode est utilisée pour enregistrer l’état actuel de l’interface utilisateur d’une activité avant qu’elle ne soit détruite.
  3. Comment restaurer l'état d'activité ?
  4. Vous pouvez restaurer l'état d'activité dans le onCreate méthode en vérifiant le saveInstanceState Bundle et récupérer les valeurs stockées.
  5. Qu'est-ce qu'un Bundle?
  6. UN Bundle est une carte de paires clé-valeur utilisée pour transmettre des données entre les activités et enregistrer l'état de l'interface utilisateur.
  7. Quel est le rôle de ViewModel dans la gestion de l'État ?
  8. ViewModel stocke les données liées à l'interface utilisateur d'une manière soucieuse du cycle de vie, survivant aux changements de configuration.
  9. Quand est onRestoreInstanceState appelé?
  10. onRestoreInstanceState est appelé après dix lorsque l'activité est réinitialisée à partir d'un état précédemment enregistré.
  11. Puis-je utiliser les deux ViewModel et onSaveInstanceState ensemble?
  12. Oui, en combinant ViewModel avec onSaveInstanceState fournit une solution robuste pour gérer l’état de l’interface utilisateur lors des modifications de configuration.
  13. Que sont les changements de configuration dans Android ?
  14. Les modifications de configuration incluent les rotations d’écran, la disponibilité du clavier et les modifications de langue qui entraînent la recréation de l’activité.
  15. Comment putString travailler dans un Bundle?
  16. putString stocke une valeur de chaîne dans un Bundle avec une clé associée pour une récupération ultérieure.

Conclusion de la gestion de l'état Android

Gérer efficacement l’état d’une activité Android est essentiel pour maintenir une expérience utilisateur fluide, notamment lors des changements de configuration. En tirant parti de onSaveInstanceState et onRestoreInstanceState Grâce à ces méthodes, les développeurs peuvent garantir que les données utilisateur et les états de l'interface utilisateur sont préservés et restaurés de manière transparente. Cette approche améliore non seulement la stabilité de l'application, mais améliore également la satisfaction des utilisateurs en fournissant une interface cohérente et fiable.