web-dev-qa-db-fra.com

Quel est le principal avantage et inconvénient de "ne pas garder les activités" dans Android

Une question que j'aimerais avoir si quelqu'un pouvait y répondre comme suit: Options Do not keep activities à vérifier lors du test de l'application mobile Android à partir des options pour les développeurs.

Je l'ai utilisé dans mon application et constaté que mon application se comportait de manière inappropriée et se bloquait lorsque j'ai activé le Do not keep activities sous Android.

Mes questions étaient peu nombreuses:

1: How much this option will affect mobile applications?

2: What exactly does this do?

Cela ressemble à un tueur d’application, je remarque que dans les options pour les développeurs, il y a une boîte qui dit Ne pas garder les activités - destroy every activity as soon as the user leaves it.

Est-ce que cela crée des fonctionnalités positives et/ou négatives sur mes applications?

Cela signifie-t-il que si j'ouvre une application et dès que je la quitte, elle ferme réellement cette application et je ne la verrais pas dans le gestionnaire de tâches pour la tuer manuellement? Si tel est le cas, n’est-ce pas une bonne chose de limiter la consommation de RAM?

Quels étaient les avantages et les inconvénients de l’utiliser tout en conservant Do not keep activities, Merci de partager votre expérience.

20

Dans quelle mesure cette option affectera les applications mobiles?

S'ils sont bien écrits, cette option ne les affectera pas.

Qu'est-ce que cela fait exactement?

Si cette option est activée, seules les variables maintenues en activité avec la méthode onSaveInstanceState Seront enregistrées lorsque vous passerez à une autre activité ou une application en arrière-plan. Toutes les autres variables seront immédiatement supprimées. Lorsque cette option est désactivée, il est possible que ces variables soient conservées

Cela signifie-t-il que si j'ouvre une application et dès que je la quitte, elle ferme réellement cette application et je ne la verrais pas dans le gestionnaire de tâches pour la tuer manuellement?

Non, cela signifie que toutes les variables non conservées seront supprimées. Dans l'exemple, appuyez sur le bouton d'accueil.

Est-ce que cela crée des fonctionnalités positives et/ou négatives sur mes applications?

Non, cela aide seulement à développer correctement l'application. Cela aide à prévoir les situations imprévues.

11
Adam Radomski

Ne pas garder les activités est purement une option de développement qui vous aidera à vérifier si

  1. Vous avez enregistré l'état de l'activité avant qu'elle ne passe en arrière-plan.

2. manutentionné mémoire basse situations correctement (dans ce cas, l'activité sera détruite). ̶

Edit : Cette option n'émule pas les situations de mémoire insuffisante. Lorsque le périphérique manque de mémoire, le système peut demander à l'activité d'être abandonnée en appelant Finish () ou de poursuivre complètement le processus, comme indiqué dans le commentaire.

Il est toujours bon de développer avec cette option activée. Vous devrez coder correctement les méthodes onSaveInstanceState() et onRestoreInstanceState(). Ainsi, même si le processus est tué, lorsque l'utilisateur revient à cette activité, onCreate () sera appelé avec le savedInstanceState enregistré dans la méthode onSaveInstanceState(Bundle).

3
Siddharth N

AVANTAGE :

Les développeurs peuvent vérifier le comportement anormal de leur application et résoudre les cas de low memory - framework kills the application

DÉSAVANTAGE :

Si l'utilisateur a activé cette option sans le savoir, l'appareil fonctionnera lentement et toutes les activités seront recréées lors de la navigation de l'utilisateur sur son appareil. Cela entravera le travail de l'utilisateur

Très bonne réponse est donnée dans forum des développeurs xda à propos de l'utilisation de cette option

1
Kushal

En tant que complément aux réponses ci-dessus, il en est un autre, non visible du premier coup d'œil désavantage que vous pouvez tester activité uniquement problèmes de destruction/loisirs avec cette option, mais pas sur l'ensemble du processus de création d'applications en raison d'un manque de mémoire ou d'autres conditions du système, car tous restent indépendants de la mémoire d'activité.

Imaginez que vous ayez quelque singleton dont dépendent vos classes. Après que le système ait tué l’application, vos singletons seront également effacés et restaurés avec l’état de départ au cas où vous n’auriez pas mis en œuvre sa restauration par vous-même. Ainsi, malgré l'état de votre activité, les champs et les champs seraient restaurés si onSaveInstanceState & onRestoreInstanceState était correctement implémenté, ce qui ne garantit pas un comportement correct de l'application après la restauration, même sur un écran particulier. Cela devrait être considéré

Donc, pour tester pleinement ce cas, vous devez arrêter l'application manuellement, mais ne la supprimez pas du gestionnaire de tâches. Le moyen le plus simple - avec le bouton d'arrêt du carré rouge dans Android Studio. Et ouvrez à nouveau l'application. 

Voir plus

0
Beloo