5 votes

Initialisations répétées des activités et utilisation de la mémoire

Merci d'avoir lu ma question, même si elle est très novice...

Comment le système Android gère-t-il la mémoire en ce qui concerne l'initialisation des activités, en particulier si une activité est initialisée par d'autres activités ? C'est une question qui me trotte dans la tête depuis un moment, mais je vais essayer de l'illustrer par un exemple :

Disons que j'ai 3 activités - A , B y C - avec activité A est celui qui est lancé lorsque l'application est démarrée pour la toute première fois. Supposons que l'activité A comporte des boutons permettant de naviguer vers les activités B y C et ces activités sont lancées à l'aide de la fonction startActivity() en lui passant un Intent instance. De même, disons que les activités B y C ont des boutons pour lancer leurs activités homologues... ça a du sens jusqu'à présent ?

Maintenant, si j'utilise le startActivity() a:

  • démarrer l'activité B de l'activité A
  • puis démarrer l'activité C de l'activité B
  • puis démarrer l'activité A de l'activité C
  • puis répéter indéfiniment les étapes ci-dessus (donc tourner en rond)

...serait-il juste de supposer que le système Android "sache" que les activités ont déjà été lancées auparavant et ne les réinitialiserait pas, ce qui consommerait de plus en plus de mémoire, mais appellerait plutôt quelque chose comme la commande onRestart() pour revenir à une instance déjà initialisée de l'activité ?

Une sacrée explication pour une question / un problème très simple... Je m'excuse si la question a déjà été posée et si la réponse a déjà été donnée ailleurs... Je n'ai pas trouvé de réponse claire ailleurs, même en lisant le site de l Formation Android sur le site des développeurs Android.

7voto

Nicholas Points 1148

La réponse est : cela dépend :-)

Si vous utilisez les paramètres standard pour les activités A , B y C votre application manquera de mémoire. La raison en est qu'Android conserve chaque activité dans la "pile arrière" qui permet à l'utilisateur de revenir en arrière en appuyant sur le bouton "retour".

Toutefois, si vous définissez le android:launchMode de vos activités à singleTop dans le AndroidManifest.xml Android acheminera alors les intentions vers les instances en cours d'exécution des activités en invoquant le fichier onNewIntent() dans l'activité.

Vous trouverez plus d'informations à ce sujet dans le Documentation pour les développeurs Android concernant les modes de lancement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X