Maison Java javaDidacticiel Explication détaillée du cycle de vie des activités dans le développement Android

Explication détaillée du cycle de vie des activités dans le développement Android

Jan 07, 2017 pm 04:19 PM

Les exemples de cet article décrivent le cycle de vie de l'activité Android. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

La classe d'activité est dans le package android.app et le système d'héritage est le suivant :

1.Java.lang .Object

2. android.content.Context

3.android.app.ApplicationContext

4.android.app.Activity

l'activité est distincte et utilisé pour gérer les opérations des utilisateurs. Presque toutes les activités doivent traiter avec des utilisateurs, donc la classe d'activité crée une fenêtre. Les développeurs peuvent placer l'interface utilisateur sur la fenêtre créée par l'activité via l'interface setContentView(View). Lorsque l'activité pointe vers la fenêtre plein écran, elle peut le faire. également être implémenté d'autres manières : en tant que fenêtre flottante (via la collection de thèmes de windowIsFloating), ou intégrée dans d'autres activités (en utilisant ActivityGroup). La plupart des sous-classes d'activité doivent implémenter les deux interfaces suivantes :

① L'interface onCreate(Bundle) est l'endroit où l'activité est initialisée. Ici, vous pouvez généralement appeler setContentView(int) pour définir l'interface utilisateur définie dans le fichier de ressources. Utilisez findViewById(int) pour obtenir la fenêtre définie dans l'interface utilisateur.

② L'interface onPause() est l'endroit où l'utilisateur est prêt à quitter l'activité. Ici, toutes les modifications doivent être soumises (généralement utilisées par ContentProvider). save data ).

Pour utiliser Context.startActivity(), toutes les classes d'activité doivent avoir des éléments « d'activité » associés définis dans le fichier AndroidManifest.xml.

La classe d'activité est une partie importante du cycle de vie des applications Android.

Cycle de vie des activités

Les activités du système sont gérées par une pile d'activités. Lorsqu'une nouvelle activité est démarrée, elle sera placée en haut de la pile et deviendra une activité en cours d'exécution. L'activité précédente restera dans la pile et ne sera plus placée au premier plan jusqu'à la fin de la nouvelle activité.

L'activité a quatre états essentiellement différents :

1. Au premier plan de l'écran (en haut de la pile d'activité), elle est appelée état actif ou en cours d'exécution (actif ou en cours d'exécution)

2. Si une activité perd le focus mais est toujours visible (une nouvelle activité non plein écran ou une activité transparente est placée en haut de la pile), elle est appelée en pause. Une activité suspendue reste active (conserve tous les états, les informations sur les membres et la connexion au gestionnaire de fenêtres), mais sera supprimée si la mémoire système est extrêmement faible.

3. Si une Activité est entièrement recouverte par une autre Activité, elle est dite Arrêtée. Il conserve toujours toutes les informations sur l'état et les membres, mais il n'est plus visible, donc sa fenêtre est masquée et l'activité arrêtée sera supprimée lorsque la mémoire système devra être utilisée ailleurs.

4. Si une activité est à l'état Pause ou Arrêté, le système peut supprimer l'activité de la mémoire. Le système Android utilise deux méthodes pour la supprimer, soit en exigeant la fin de l'activité, soit en la supprimant directement. processus. Lorsque l'activité est à nouveau présentée à l'utilisateur, elle doit redémarrer et réinitialiser l'état précédent.

La figure ci-dessous montre les transitions d'état importantes d'Activity. La boîte rectangulaire indique l'interface de rappel d'Activity entre les transitions d'état. Les développeurs peuvent surcharger l'implémentation pour exécuter le code pertinent. État.

Explication détaillée du cycle de vie des activités dans le développement Android

Dans l'image ci-dessus, Activity comporte trois cycles clés :

1 Le cycle de vie complet, de onCreate(Bundle) à onDestroy() Finish. . L'activité définit tous les états "globaux" dans onCreate() et libère toutes les ressources dans onDestory(). Par exemple, si une activité a un thread exécuté en arrière-plan pour télécharger des données depuis le réseau, l'activité peut créer le thread dans onCreate() et arrêter le thread dans onDestory().

2. Le cycle de vie visible commence à partir de onStart() et se termine par onStop(). Pendant ce temps, l'activité est visible à l'écran, même si elle ne peut pas être au premier plan et ne peut pas interagir avec l'utilisateur. Entre ces deux interfaces, il est nécessaire de conserver les données et les ressources de l'interface utilisateur affichées à l'utilisateur. Par exemple, vous pouvez enregistrer un IntentReceiver dans onStart pour écouter les modifications de l'interface utilisateur provoquées par les modifications des données. Vous pouvez l'enregistrer dans onStop() Désenregistrer dans . onStart() et onStop() peuvent être appelés plusieurs fois car l'activité peut basculer entre visible et masqué à tout moment.

3. Le cycle de vie du premier plan commence par onResume() et se termine par onPause(). Pendant ce temps, l’activité est au premier plan de toutes les activités et interagit avec l’utilisateur. L'activité peut fréquemment basculer entre les états de reprise et de pause, par exemple : lorsque l'appareil se prépare à dormir, lorsqu'un résultat de traitement d'activité est envoyé et lorsqu'une nouvelle intention est envoyée. Le code de ces méthodes d’interface doit donc être très léger.

Le cycle de vie complet de l'activité est défini dans les méthodes d'interface suivantes, et toutes les méthodes peuvent être surchargées. Toutes les activités doivent implémenter onCreate(Bundle) pour initialiser les paramètres. La plupart des activités doivent implémenter onPause() pour soumettre les données modifiées. Actuellement, la plupart des activités doivent également implémenter l'interface onFreeze() pour restaurer l'état de onCreate(Bundle). le réglage.

public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}
Copier après la connexion

J'espère que cet article sera utile à tout le monde dans la programmation Android.

Pour des articles plus détaillés sur le cycle de vie des activités de développement Android, faites attention au site PHP chinois !


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Top 4 frameworks JavaScript en 2025: React, Angular, Vue, Svelte Top 4 frameworks JavaScript en 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Cet article analyse les quatre premiers cadres JavaScript (React, Angular, Vue, Svelte) en 2025, en comparant leurs performances, leur évolutivité et leurs perspectives d'avenir. Alors que tous restent dominants en raison de fortes communautés et écosystèmes, leur populaire relatif

Spring Boot SnakeyAml 2.0 CVE-2022-1471 Issue fixe Spring Boot SnakeyAml 2.0 CVE-2022-1471 Issue fixe Mar 07, 2025 pm 05:52 PM

Cet article aborde la vulnérabilité CVE-2022-1471 dans SnakeyAml, un défaut critique permettant l'exécution du code distant. Il détaille comment la mise à niveau des applications de démarrage de printemps vers SnakeyAml 1.33 ou ultérieurement atténue ce risque, en soulignant cette mise à jour de dépendance

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Mar 17, 2025 pm 05:35 PM

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Mar 17, 2025 pm 05:44 PM

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Node.js 20: Boosts de performances clés et nouvelles fonctionnalités Node.js 20: Boosts de performances clés et nouvelles fonctionnalités Mar 07, 2025 pm 06:12 PM

Node.js 20 améliore considérablement les performances via des améliorations du moteur V8, notamment la collecte des ordures et les E / S plus rapides. Les nouvelles fonctionnalités incluent une meilleure prise en charge de Webassembly et des outils de débogage raffinés, augmentant la productivité des développeurs et la vitesse d'application.

Iceberg: L'avenir des tables de Data Lake Iceberg: L'avenir des tables de Data Lake Mar 07, 2025 pm 06:31 PM

Iceberg, un format de table ouverte pour les grands ensembles de données analytiques, améliore les performances et l'évolutivité du lac Data. Il aborde les limites du parquet / orc par le biais de la gestion interne des métadonnées, permettant une évolution efficace du schéma, un voyage dans le temps, un W simultanément

Comment puis-je implémenter des techniques de programmation fonctionnelle en Java? Comment puis-je implémenter des techniques de programmation fonctionnelle en Java? Mar 11, 2025 pm 05:51 PM

Cet article explore l'intégration de la programmation fonctionnelle dans Java à l'aide d'expressions Lambda, de flux API, de références de méthode et facultatif. Il met en évidence des avantages tels que l'amélioration de la lisibilité au code et de la maintenabilité grâce à la concision et à l'immuabilité

Comment partager les données entre les étapes du concombre Comment partager les données entre les étapes du concombre Mar 07, 2025 pm 05:55 PM

Cet article explore les méthodes de partage des données entre les étapes du concombre, la comparaison du contexte de scénario, les variables globales, le passage des arguments et les structures de données. Il met l'accent

See all articles