6 votes

Comment réduire la valeur d'usage d'une application de façon permanente ?

Je ne conteste pas la technique de gestion de la mémoire d'Android (comme le font les tueurs). Je veux juste donner une priorité plus élevée à une application même si elle n'est pas au premier plan ou visible (avec notification).

Optimiseur de mémoire AutoKiller est capable de le faire sur un appareil enraciné, mais le changement ne dure que quelques secondes si je suis multitâche.

Je veux faire cela de façon permanente : peut-être qu'exécuter un démon en arrière-plan pour faire des changements en permanence devrait fonctionner. Comment faire ?

0 votes

Même problème ici. Vous pouvez utiliser le v6 supercharger pour une solution partielle à vos problèmes.

0 votes

Vous pouvez demander au développeur d'ajouter un service (facultatif) à l'application. Les applications ayant un service connecté sont moins susceptibles d'être tuées par les OOM.

1 votes

@Izzy La priorité des applications ayant des services est inférieure à celle des applications de premier plan et visibles. BTW, combien de développeurs vous me suggérez de calculer ? Ce n'est pas une solution...

4voto

Milner Points 533

Sur XDA, j'ai trouvé un poste discutant de comment PIN une application pour ne pas être tué par OOM. Comme votre question indique que votre appareil est rooté, cela pourrait vous être utile. Le principe qui y est décrit peut également être appliqué à votre cas en changeant simplement l'option oom_adj spécifiée (la -17 l'épinglerait de façon permanente, le plus haut prix -- utilisez donc une valeur plus grande pour "affaiblir" cela).

Le script affiché ici ressemble à ceci :

#!/system/bin/sh
sleep 60

PPID=$(pidof com.estrongs.android.safer)
echo "-17" > /proc/$PPID/oom_adj

Un utilisateur anonyme a noté que vous pourriez également définir ce fichier avec des autorisations de lecture seule pour empêcher Android de le mettre à jour, en ajoutant chmod 444 /proc/$PPID/oom_adj au script ci-dessus (le 444 proposé ne signifie rien d'autre qu'une permission de lecture, mais n'affecte pas la capacité du système à supprimer le fichier lorsque le processus se termine). Je ne l'ai pas vérifié, mais cela pourrait en fait vous éviter d'exécuter le script en boucle/répétitivement, rendant la valeur définie permanente tant que le processus vit.

Comme indiqué, remplacez le -17 par la valeur que vous avez choisie. Remplacez également le nom du paquetage de l'application ( com.estrongs.android.safer ) par le nom du paquet de votre application cible. Vous pouvez également abaisser le sleep ou même ne pas tenir compte du sommeil du tout.

Vous devez maintenant trouver un moyen de l'exécuter automatiquement dès que votre application est en cours d'exécution. Pour cette partie, vous pouvez par exemple utiliser Tasker : Le contexte serait "app running" (et votre app sélectionnée), et la tâche "run shell", avec le script ci-dessus comme paramètre. Ensuite, dès que vous démarrez votre application (et qu'elle passe au premier plan), Tasker exécuterait le script et le oom_adj doit être appliquée.

0 votes

J'ai remarqué que si je mets l'application en arrière-plan, la valeur oom_adj change. Cela signifie-t-il que l'application a été dépliée ?

1voto

Ethan Points 11

Cela ne peut pas être fait à partir du code d'une application (service d'arrière-plan, thread ou autre). La raison est bien décrite dans ce post, http://debuggingisfun.blogspot.com/2014/03/Android-foolproof-low-memory-killer.html

0 votes

Bienvenue chez Android Enthusiasts ! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure les parties essentielles de la réponse ici, et de fournir le lien pour référence.

-2voto

Johan Points 521

ROM Toolbox Pro de Jrummy a un gestionnaire d'OOM intégré.

1 votes

C'est similaire à Optimiseur de mémoire AutoKiller .. Relisez la question..

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