1 votes

Gestion des processus natifs d'Android vs Greenify

Avertissement: Je ne suis en aucun cas lié aux développeurs de Greenify, ni je ne cherche à promouvoir Greenify ou quoi que ce soit. Je suis en fait intéressé par les réponses à ces questions.

J'ai remarqué qu'avec beaucoup d'appareils Android que j'ai gérés, ils deviennent plus lents plus on installe d'applications dessus. Cela est particulièrement vrai avec les applications qui effectuent certaines tâches en arrière-plan. Souvent, les appareils peuvent devenir tellement lents qu'ils sont très pénibles à utiliser.

La solution que j'ai trouvée à cela était une application appelée Greenify, que j'utilise avec des privilèges root et un module Xposed. Je trouve que je peux garder toutes les applications sur les appareils, mais "hiberner" toutes pour les "Greenifier". (Je pense que cela signifie que les applications inactives sont constamment "hibernées" ou privées de ressources système, laissant ainsi les ressources disponibles pour les applications actives.) Cela rend généralement l'appareil beaucoup plus réactif, cependant je trouve que l'effet sur la fonctionnalité des applications est assez minimal. Inutile de dire que je considère Greenify comme un must, surtout sur les appareils avec de nombreuses applications gourmandes en ressources et/ou du matériel limité.

  1. Est-ce qu'Android fait quelque chose de similaire à Greenify de manière native? (Priver les applications en arrière-plan de ressources pour les libérer pour les applications actives?)

  2. Si oui, en quoi Greenify est-il différent de la gestion des ressources native d'Android?

Je trouve que beaucoup de gens ont des appareils Android qui ont tendance à ralentir avec le temps, et beaucoup finissent par acheter un nouvel appareil plus puissant tous les quelques années. Mais s'ils utilisaient Greenify (ou quelque chose de similaire), ils auraient peut-être été satisfaits des performances de l'ancien appareil pendant de nombreuses années de plus. Par exemple, j'ai un téléphone âgé de cinq ans, avec plein d'applications dessus, et je suis très satisfait de ses performances en utilisant Greenify. Cependant, sans Greenify (et avec toutes mes applications), le téléphone est tellement lent qu'il est à peine utilisable.

  1. Y a-t-il un moyen natif sur Android d'empêcher les applications de s'exécuter en arrière-plan et de consommer des ressources système?

Par exemple, dans des distributions GNU/Linux comme Debian et Ubuntu, les applications ne s'exécutent pas ou ne consomment aucune ressource du tout à moins que vous ne les lanciez explicitement (ou que vous les ayez configurées pour se lancer au démarrage). C'est la même chose avec OS X et Windows. Et lorsque vous fermez complètement un programme, il ne peut plus consommer de ressources. Je pense même qu'iOS tue automatiquement les applications en arrière-plan lorsqu'il a besoin des ressources pour autre chose.

J'ai utilisé des gestionnaires de tâches manuels, mais après un certain temps, je trouve que toutes les applications sont de nouveau en cours d'exécution en arrière-plan, même si je ne les ai pas lancées du tout.

  1. Est-il vrai qu'Android est quelque peu unique en permettant aux applications de s'exécuter en arrière-plan, en consommant des ressources?

0 votes

Il a déjà été argumenté que les applications de gestion des performances sont plus un inconvénient qu'un avantage sur les appareils Android. Le fait est que le noyau d'un appareil Android est une dérivation du noyau Linux, donc les appareils devraient déjà savoir comment gérer leurs ressources sans avoir besoin d'applications externes. De plus, en ce qui concerne la fermeture d'une application, il y a un énorme inconvénient : chaque fois que vous la redémarrez, la consommation de la batterie est supérieure à celle que vous auriez en la laissant en arrière-plan. Cela est dû au fait que la plupart des appareils Android savent déjà comment se gérer.

0 votes

La commande : am force-stop PACKAGE. C'est tout.

1 votes

@Firelord Est-il vrai que Greenify est un peu plus avancé qu'un simple tueur de tâches ? Que fait-il avec ses privilèges root et son module Xposed ?

4voto

Matthew Read Points 50150

Depuis le site des développeurs Android:

  • Si une activité a perdu le focus mais est toujours visible (c'est-à-dire qu'une nouvelle activité non en plein écran ou transparente a le focus au-dessus de votre activité), elle est en pause. Une activité en pause est complètement active (elle conserve tout son état et ses informations de membre et reste attachée au gestionnaire de fenêtres), mais peut être arrêtée par le système dans des situations de mémoire extrêmement faibles.
  • Si une activité est complètement occultée par une autre activité, elle est arrêtée. Elle conserve toujours son état et ses informations de membre, cependant, elle n'est plus visible par l'utilisateur, donc sa fenêtre est cachée et elle sera souvent tuée par le système lorsque la mémoire est nécessaire ailleurs.
  • Si une activité est en pause ou arrêtée, le système peut libérer l'activité de la mémoire en lui demandant de terminer, ou simplement en tuant son processus. Lorsqu'elle est de nouveau affichée à l'utilisateur, elle doit être complètement redémarrée et restaurée dans son état précédent.

Aussi:

Ainsi, lorsque le système manque de mémoire, il peut tuer des processus [...] en commençant par le processus le moins récemment utilisé, mais aussi en tenant compte des processus les plus gourmands en mémoire.

En ce qui concerne la mise en œuvre technique, le système appelle les applications pour les informer qu'elles doivent libérer la mémoire ou risquer d'être tuées:

Aussi, lorsque le processus de votre application est actuellement mis en cache, vous pouvez recevoir l'un des niveaux suivants de onTrimMemory():

  • TRIM_MEMORY_BACKGROUND

    Le système manque de mémoire et votre processus est proche du début de la liste LRU. Bien que votre processus d'application ne soit pas fortement menacé d'être tué, le système peut déjà tuer des processus dans le cache LRU. Vous devriez libérer des ressources faciles à récupérer pour que votre processus reste dans la liste et reprenne rapidement lorsque l'utilisateur revient à votre application.

  • TRIM_MEMORY_MODERATE

    Le système manque de mémoire et votre processus est proche du milieu de la liste LRU. Si le système est encore plus contraint en mémoire, il y a une chance que votre processus soit tué.

  • TRIM_MEMORY_COMPLETE

    Le système manque de mémoire et votre processus est l'un des premiers à être tué si le système ne récupère pas de mémoire maintenant. Vous devriez libérer tout ce qui n'est pas essentiel pour reprendre l'état de votre application.

Donc pour répondre directement à vos questions:

  1. Non, Android ne nettoie rien pour les applications, mais il les informe de le faire elles-mêmes et les tue s'ils ne le font pas (ou si ce n'est pas suffisant).

  2. Greenify semble désactiver "à la volée" des applications, donc elles ne sont pas autorisées à s'exécuter en arrière-plan (et ne peuvent pas démarrer automatiquement si elles ne sont pas en cours d'exécution), mais peuvent toujours fonctionner en avant-plan. C'est complètement différent de la manière dont Android le fait comme vous le voyez ci-dessus.

  3. Oui, les désactiver (depuis Paramètres → Applications → ) (bien que vous devrez les réactiver lorsque vous voudrez les exécuter manuellement). Ou, pour ceux qui n'ont pas de services de redémarrage automatique, il suffit de les tuer (c'est-à-dire, appuyez longuement sur le bouton Menu et faites-les glisser). Ce dernier ne les empêchera pas de redémarrer si le système leur envoie un intent, etc.

  4. Non, pas du tout. Le multitâche véritable est disponible depuis longtemps sur les appareils mobiles — l'iPhone original était une anomalie lors de son lancement sans cette capacité.

0 votes

Ce système semble très bon en théorie. Alors comment se fait-il que de nombreux appareils deviennent plus lents plus vous installez d'applications dessus? Comme les exemples décrits par moi et Charles.milette? Ne devrait pas le système décrit empêcher cette tendance?

2 votes

@Fiksdal La faute incombe principalement aux développeurs d'applications qui ne savent pas comment suspendre correctement les tâches / libérer la mémoire / utiliser des écouteurs à faible consommation. Cependant, certaines applications nécessitent vraiment des récepteurs actifs (comme une application pour des gestes personnalisés qui doit recevoir votre entrée à tout moment) ou auront des services de notification, etc. Peu importe à quel point ils sont légers, ils s'accumuleront si vous en installez beaucoup. Pas différent d'installer beaucoup d'applications avec des services de mise à jour, des interfaces de plateau, etc. sur un système d'exploitation de bureau.

2 votes

Si vous souhaitez conserver de telles applications pour une utilisation manuelle mais que vous ne souhaitez pas que les tâches automatiques vident votre batterie lorsque vous ne les utilisez pas activement, Greenify est une solution décente (mais comporte ses propres frais généraux, car il doit exécuter un service pour gérer les applications "en direct").

3voto

Charles Milette Points 233
  1. Android ferme en fait certaines applications en arrière-plan, mais seulement lorsque les ressources du système manquent (par exemple, lorsque vous ouvrez un jeu massif)

  2. Greenify diffère de la gestion de la mémoire Android par le fait qu'il ferme toutes les applications que vous avez spécifiées à volonté ou après un certain temps, non seulement lorsque les ressources manquent.

  3. Non. Si certaines applications système que vous n'utilisez pas s'exécutent en arrière-plan, vous pouvez les désactiver ou les supprimer complètement avec une application root ou le adb shell

  4. Voici la liste des choses que je sais peuvent démarrer une activité en arrière-plan et la maintenir ouverte:

    • Les applications peuvent démarrer automatiquement une activité au démarrage du système avec une autorisation.
    • Elles peuvent également en démarrer une lorsqu'elles sont ouvertes.
    • Une vulnérabilité dans Android 4.3 et antérieurs permet aux applications de les maintenir actives, même lorsque le gestionnaire de tâches Android essaie de les fermer, mais Greenify peut contourner cela (voir les paramètres expérimentaux).

Et @DeathMaskSalesman, un HTC Wildfire S tournant sous KitKat doit avoir Greenify, sinon il fonctionnera incroyablement lentement et consommera beaucoup de batterie, plus que ce qui est nécessaire pour démarrer une application.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X