Une chose me laisse perplexe. Il semble que si j'utilise un programme sur Android et que j'appuie sur le bouton "Accueil", je vois l'écran d'accueil et je peux réexécuter le programme et voir ce programme dans le même état qu'avant - il semble donc que le programme ne soit pas complètement redémarré, juste suspendu puis repris.
Pourtant, cela ne semble pas se produire de manière cohérente avec le jeu Air Control. Parfois, lorsque je joue à Air Control et que j'appuie sur "home", puis que je réexécute Air Control - il est suspendu (comme si j'avais appuyé sur le bouton "pause") et je peux reprendre le jeu. Parfois, la même chose conduit Air Control à abandonner le jeu et à recommencer.
Il semble donc que je ne comprenne pas quelque chose.
Quel est le problème ici? Qu'arrive-t-il à un programme lorsque vous appuyez sur "home"? Continue-t-il de fonctionner ou que fait-il?
la source
Réponses:
En appuyant sur les Hometouches, vous passez de l'application à l'écran d'accueil, tout en laissant votre application en arrière-plan. C'est un peu comme passer d'une fenêtre à l'autre sur un PC Windows.
Sauf que lorsque votre téléphone manque de ressources comme la mémoire, il commencera à fermer les applications qui s'exécutent en arrière-plan, de sorte que votre téléphone dispose de suffisamment de ressources pour ce que vous essayez de faire maintenant. Les jeux sont souvent parmi les premières applications que le téléphone "tuera" pour économiser les ressources car ils utilisent souvent beaucoup plus de mémoire et de CPU que les autres applications. C'est pourquoi parfois votre jeu est toujours en pause et parfois Android l'a fermé pour vous.
Le Backbouton est le moyen de fermer les applications afin qu'elles soient réellement fermées.
Voir aussi Quelle est la bonne façon de fermer des applications sur Android?
la source
Le document Android Development Tasks and Back Stack couvre en fait assez bien cela. Un extrait pertinent:
Résumé : la tâche est déplacée en arrière-plan lorsque vous appuyez sur
Home
et se trouve en mémoire, sans rien faire et en conservant son état. Cela signifie que (généralement parlant) vous pouvez revenir à la tâche et elle reprendra là où elle s'était arrêtée. Cependant, le système Android peut - et va - tuer les tâches d'arrière-plan s'il a besoin de récupérer de la mémoire. Quand et si cela se produit, cela dépend entièrement du système, et c'est probablement pourquoi vous voyez un comportement incohérent lors de la reprise.Si la tâche est détruite par le système, elle devra être recréée lorsque vous la relancerez. Donc, à moins que l'auteur de l'application n'ait pris des mesures pour enregistrer l'état de l'application pendant le processus de destruction, il sera perdu (et l'enregistrement de l' état exact dans des choses comme les jeux est assez peu pratique).
Un autre bon document (mais aussi détaillé) est celui qui couvre le cycle de vie des activités (il y a un bel organigramme si vous faites défiler un peu).
la source
Appuyer sur la touche Accueil permet à l'utilisateur de démarrer une nouvelle tâche, en affichant le lanceur. Toutes les tâches actives (et par conséquent les activités, y compris votre exemple "Contrôle aérien") appellent leur
onPause()
méthode.Il appartient à l'application (et à son activité) de restaurer l'état précédent exact lorsqu'elle revient visible. Il est également possible que le processus d'applications soit tué pendant que l'activité est en arrière-plan, mais cela ne devrait pas affecter l'expérience des utilisateurs. L'utilisateur ne devrait pas être en mesure de faire la différence si une activité vient d'être interrompue ou si elle a également été supprimée. Cela pourrait expliquer le comportement différent d'Air Control, ce qui pourrait être le signe d'une implémentation défectueuse de la gestion du cycle de vie Android.
la source
destroy()
les composants d'application correspondants.onStop
méthode est appelée. Un processus interrompu ne signifie pas que l'activité obtient saonDestroyed
méthode, bien qu'elle soit en effet similaire. «Tuer» un processus d'activité signifie que la machine virtuelle est supprimée de la RAM. Pour moi, cela (Android le tue) semble susceptible d'affecter l'expérience utilisateur.Ma réputation est encore trop faible sur ce site pour voter, alors je réponds à la réponse d'Emphaisze Flow. Je continue de rencontrer ce problème dans l'une de mes applications. J'ai divers contrôles spinner et vous devez enregistrer explicitement leur état dans onPause () puis restaurer les états dans onResume () - Android ne se souvient pas automatiquement de leurs états.
Une autre complication est que parfois Android appellera la fonction onCreate () d'une application lorsque vous vous attendez à ce qu'elle appelle onResume ().
Votre problème avec Air Control (ou toute autre application) est donc spécifique à cette application et vous devez signaler le comportement au développeur pour correction. La plupart des applications ont un e-mail de contact sur le marché.
BTW, si vous voulez comprendre le cycle de vie des applications, je recommande le chapitre 2 de Hello, Android d'Ed Burnette, en particulier la figure 2.3.
la source
Bouton d'accueil enfoncé dans une application:
La plupart des applications enregistreront leur état (tout bit de données qui serait nécessaire pour rester cohérent lors de la reprise), et l'appareil passera à l'application de lancement.
Bouton Accueil Appuyez sur lorsque sur les écrans d'accueil:
Ceci est configurable par de nombreux lanceurs tiers; cependant, beaucoup d'entre eux vous ramènent par défaut à votre écran d'accueil "principal" (le lanceur par défaut le fait).
Ce qui pourrait inquiéter votre ami:
Le changement d'applications peut être gourmand en mémoire et entraîner plusieurs écritures de disque pour enregistrer les données. Cela utilise la batterie; cependant, ce n'est généralement pas la principale cause de la décharge de la batterie sur les appareils (les systèmes d'exploitation sont optimisés pour faire ces choses).
Certaines applications continueront de fonctionner en tant qu'application d'arrière-plan, donc appuyer sur le bouton d'accueil ne les tuera pas (par exemple, Google Play Musique continuera de jouer après avoir appuyé sur le bouton d'accueil).
Votre ami peut craindre qu'en appuyant sur le bouton d'accueil, vous n'ayez pas quitté le programme et qu'il soit donc toujours en cours d'exécution. Android déchargera ces applications si nécessaire.
Vous et votre ami devriez être plus préoccupés par l'écran - qui utilise le plus d'énergie.
la source