26 votes

Existe-t-il un moyen de désactiver définitivement Google Maps jusqu'à ce que vous en ayez besoin ?

Google Maps semble avoir une quantité folle d'intentions enregistrées pour lui, ainsi que d'autres moyens d'être lancé.

Comme il s'agit d'une application très gourmande en ressources (notamment en mémoire), j'aimerais beaucoup qu'il soit possible d'y accéder. en permanence ne fonctionne que si/jusqu'à ce que j'en ai vraiment besoin. Cependant, Android continue de le lancer en permanence, par exemple, lorsque l'état de la connectivité change (ce qui, pour moi, se produit assez fréquemment en intérieur) ou lorsque la position GPS/réseau change.

Existe-t-il un moyen de faire en sorte que Google Maps ne lance AUCUN processus, garanti, jusqu'à ce que je clique sur une icône pour le lancer délibérément ?

Environnement : Droid X, fonctionnant en root stock Froyo 2.2 ; j'ai Autostarts . et Advanced Task Killer, ainsi que la version Pro de Titanium Backup installée.

Je suis ouvert à presque toutes les méthodes tant que

  • Il est fiable.

  • Il me permet d'utiliser Google Maps avec toutes les fonctionnalités prévues lorsque j'en ai vraiment besoin, sans avoir besoin de 5 minutes de travail pour le reconfigurer.

  • Idéalement, il ne faudrait pas que je doive redémarrer pour l'utiliser, mais ce n'est pas un problème.

  • Je préférerais VIVEMENT une méthode générique qui serait applicable à d'autres applications, PAS seulement à Google Maps.

  • Je suis un développeur de logiciels avec une bonne dose d'expérience en administration système Unix/Linux. En d'autres termes, les solutions qui nécessitent une invite shell ou l'écriture/exécution de scripts shell (ou Perl dans l'environnement de script Android) sont les bienvenues.

    Les solutions impliquant l'écriture de ma propre application Java Android sont acceptables tant qu'elles sont suffisamment détaillées pour qu'un débutant en développement Android puisse au moins faire un peu de travail sans être complètement perdu.

Les choses que j'ai essayées :

  • Le fait de tuer les processus via Task Killer ne fonctionne PAS - ils reviennent, soit immédiatement, soit après un petit moment. Probablement via Intents mais je ne suis pas sûr à 100%.

  • Méthodes standard pour résoudre les problèmes de GMaps (déconnexion de Latitude/arrêt du GPS et du localisateur de réseau). Cela semble beaucoup aider, mais je trouve inacceptable la nécessité d'éteindre en permanence le GPS/localisateur, car cela ne me permet pas d'exécuter l'application Locale ou les tâches locales.

  • Geler via Titanium Backup Pro. Cela nécessite un redémarrage et n'est généralement pas très agréable.

Les approches possibles auxquelles j'ai pensé (mais ne savent pas comment faire) sont :

  • D'une manière ou d'une autre, éliminez complètement (désactivez) toutes les intentions enregistrées par Google Maps lorsqu'elles ne sont pas nécessaires.

    Problèmes : Premièrement, je ne sais pas quels sont TOUS les Intents utilisés par Google Maps.

    Deuxièmement, le seul moyen pratique de faire cela que je connaisse est l'application Autostarts qui n'est PAS une solution viable - cela prend ~5-10 minutes pour trouver et réactiver toutes les intentions. Je suis conscient de (Autostarts est vraiment mauvais dans la gestion des intentions par application - il est centré sur l'intention), sans parler des intentions possibles qu'Autostarts ne connaît PAS (c'est une boîte noire, je ne sais pas quelles intentions sont manquées, si elles existent.

  • Il existe un script qui renomme les JAR ou tout autre fichier exécutable sur Android (entier .APK ?) de disons GoogleMaps.apk a GoogleMaps.disabled.apk et retour.

    Problème : Je ne sais pas si cela est possible sur un Froyo enraciné. De plus, Google Maps était pré-installé sur DroidX, donc renommer n'affecterait que la mise à jour mais pas l'application originale ?

  • Disposer d'un script qui ira dans l'APK et renommera/déplacera/videra le fichier manifeste pour supprimer toute intention pour cette application.

    Problème : cela nécessite-t-il une recompilation ? Il est certain que cela nécessite un redémarrage, ce qui est un inconvénient.

17voto

mercutio Points 5828

D'abord, Je vous suggère d'arrêter d'utiliser vos tueurs de tâches . Ils vident votre batterie plus qu'ils ne l'économisent. Le système redémarre les services lorsqu'ils doivent être exécutés, ce qui entraîne une utilisation de la batterie.

Deuxièmement, vous partez du principe que libérer de la mémoire est une bonne chose. Ce n'est pas le cas. Libérer de la mémoire ne va pas réduire l'utilisation de la batterie. Ce que vous devez vraiment rechercher, ce sont les applications qui utilisent beaucoup de cycles CPU. C'est ce qui va vider votre batterie.

Android est basé sur Linux. Linux veut toujours utiliser toute la mémoire disponible car la mémoire libre est de la mémoire gaspillée. Le système Android se charge de libérer la mémoire des applications qui ne sont pas utilisées afin que d'autres applications puissent l'utiliser en cas de besoin.

Même si vous essayez de tuer les applications qui sont en cours d'exécution et occupent de la mémoire, le système redémarrera ces services/applications, ce qui entraînera une décharge de la batterie car ils ont probablement une synchronisation qui se produit au démarrage, ou simplement les cycles du processeur qui sont utilisés pour initialiser l'application. En tuant les applications, l'appareil semblera également lent lorsqu'il essaiera de lancer des applications, car quelque chose qui est normalement en cours d'exécution doit être redémarré avant de vous présenter l'interface utilisateur des applications.

Certains éléments qui provoquent une décharge de la batterie, comme le GPS, le wifi, le bluetooth et l'utilisation des données, vont utiliser beaucoup plus votre processeur pour traiter les données qui sont transmises et reçues. En désactivant ces éléments lorsqu'ils ne sont pas utilisés, vous économiserez beaucoup de batterie. J'ai une mauvaise batterie dans mon appareil, il ne se charge même pas au-delà de 94%, mais je peux obtenir 12 heures ou plus de ma batterie si je désactive ces services lorsque je n'en ai pas besoin.

J'utilise Google Maps en permanence, et dans mes statistiques de batterie, il n'est même pas répertorié comme une application utilisant des ressources. L'application qui consomme le plus de batterie est l'écran (31 %), et celle qui en consomme le moins est GMail (3 %). Je peux vous assurer que Google Maps n'est pas la cause de votre consommation de batterie. L'utilisation de tueurs de tâches est plus probablement la cause. Comme je l'ai dit, j'utilise Google Maps pour me diriger presque tous les jours, et il n'est même pas dans le top 10 des applications qui utilisent ma batterie.

Pour en savoir plus sur les tueurs de tâches, consultez le site Blog des développeurs Google Android .

Un malentendu courant sur le multitâche Android concerne la différence entre un processus et une application. Dans Android, il ne s'agit pas d'entités étroitement couplées : les applications peuvent sembler présentes pour l'utilisateur sans qu'un processus réel soit en cours d'exécution ; plusieurs applications peuvent partager des processus, ou une application peut utiliser plusieurs processus en fonction de ses besoins ; le ou les processus d'une application peuvent être conservés par Android même lorsque cette application n'est pas en train de faire quelque chose.

Le fait que vous puissiez voir le processus d'une application "en cours d'exécution" ne signifie pas que l'application fonctionne ou fait quelque chose. Elle peut simplement être là parce qu'Android en a eu besoin à un moment donné et a décidé qu'il valait mieux la conserver au cas où il en aurait à nouveau besoin. De même, vous pouvez quitter une application pendant un certain temps et y revenir là où vous l'avez laissée, et pendant ce temps, Android peut avoir eu besoin de se débarrasser du processus pour d'autres choses.

L'une des clés de la façon dont Android traite les applications de cette manière est que les processus ne s'arrêtent pas proprement. Lorsque l'utilisateur quitte une application, son processus est maintenu en arrière-plan, ce qui lui permet de continuer à travailler (par exemple, télécharger des pages web) si nécessaire, et de revenir immédiatement au premier plan si l'utilisateur y revient. Si un appareil n'est jamais à court de mémoire, Android conservera tous ces processus, laissant toutes les applications "en cours d'exécution" en permanence.

Bien entendu, la quantité de mémoire est limitée et, pour s'en accommoder, Android doit décider quand se débarrasser des processus qui ne sont pas nécessaires. Cela conduit au cycle de vie des processus d'Android, les règles qu'il utilise pour décider de l'importance de chaque processus et donc du prochain qui doit être abandonné. Ces règles sont basées à la fois sur l'importance d'un processus pour l'expérience actuelle de l'utilisateur et sur le temps écoulé depuis la dernière fois que l'utilisateur a eu besoin de ce processus.

Une fois qu'Android détermine qu'il doit supprimer un processus, il le fait brutalement, en le tuant simplement de force. Le noyau peut alors récupérer immédiatement toutes les ressources nécessaires au processus, sans compter que l'application doit être bien écrite et répondre à une demande polie de sortie. En permettant au noyau de récupérer immédiatement les ressources de l'application, il est beaucoup plus facile d'éviter les situations graves de manque de mémoire.

Si un utilisateur revient plus tard à une application qui a été tuée, Android doit trouver un moyen de la relancer dans le même état que la dernière fois qu'elle a été vue, afin de préserver l'expérience "toutes les applications fonctionnent tout le temps". Cela se fait en gardant la trace des parties de l'application dont l'utilisateur est conscient (les activités), et en les relançant avec des informations sur le dernier état dans lequel elles ont été vues. Ce dernier état est généré chaque fois que l'utilisateur quitte cette partie de l'application, et non pas lorsqu'elle est tuée, de sorte que le noyau peut plus tard la tuer librement sans dépendre de la réponse correcte de l'application à ce moment-là.

D'une certaine manière, la gestion des processus d'Android peut être considérée comme une forme d'espace d'échange : les processus d'application représentent une certaine quantité de mémoire en cours d'utilisation ; lorsque la mémoire est faible, certains processus peuvent être tués (swap out) ; lorsque ces processus sont à nouveau nécessaires, ils peuvent être redémarrés à partir de leur dernier état sauvegardé (swap in).

Voici un autre article qui explique comment les tueurs de tâches vont vider votre batterie.

N'utilisez pas de logiciel de suppression automatique des tâches
Pour faire court, l'utilisation de tueurs de tâches automatiques peut entraîner : une décharge excessive de la batterie (comme si le téléphone ne se déchargeait pas déjà assez vite), une surchauffe fréquente du téléphone et l'arrêt (le plantage) aléatoire de programmes que vous souhaitez utiliser. Ne les utilisez pas !

Si vous tenez vraiment à "arrêter les cartes" jusqu'à ce que vous souhaitiez les utiliser, vous pouvez utiliser l'option Freeze de titanium backup. Cela aura pour effet de supprimer l'application de l'appareil et aucun des services qui lui sont associés ne démarrera jusqu'à ce que vous la libériez.

11voto

Chahk Points 19297

Avez-vous pensé à désinstaller et réinstaller Maps comme solution possible ?

  1. Tout d'abord, débarrassez-vous des cartes préchargées en supprimant le fichier /system/app/Maps.apk fichier :

    su  
    rm /system/app/Maps.apk

    Une fois qu'une application système est mise à jour, elle est inutile dans le dossier /system/app et peut être supprimée en toute sécurité.

  2. Copiez ensuite la version actuelle de Maps sur votre carte SD :

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
  3. Désinstallez maintenant l'application Maps :

    pm uninstall -k com.google.android.apps.maps

    Le commutateur "-k" conserve les paramètres pour la réinstallation de l'application.

  4. Maintenant, pour récupérer Maps, il suffit de le réinstaller à partir de la sauvegarde :

    pm install -r /sdcard/com.google.android.apps.maps*.apk

Vous pouvez automatiser ces étapes via GScript qui vous permet de créer des raccourcis vers des scripts. Il suffit donc de créer un script nommé "Disable Maps" avec la commande de l'étape 3, et un autre nommé "Enable Maps" avec la commande de l'étape 4 (cochez "Needs SU ?" pour les deux).

Vous pouvez maintenant ajouter 2 raccourcis GScript à votre écran d'accueil à partir des scripts que vous avez créés en utilisant la méthode normale d'Android "Ajouter un raccourci" (GScript sera l'une des options).

Le seul inconvénient de cette méthode est que vous perdrez très probablement le raccourci (et/ou le widget) Cartes de votre écran d'accueil lorsque vous le désinstallerez, ce qui vous obligera à le réinsérer après la réinstallation. Bien entendu, vous pourrez toujours lancer Maps à partir du tiroir d'applications.

5voto

Milner Points 533

D'après votre mention de Titanium Backup, je suppose que votre appareil est enraciné. Donc ma recommandation absolue ici est Gestionnaire AutoRun (et oui, vous aurez besoin du Pro - deuxièmement, oui, cela en vaut la peine). Une fois cela installé, ouvrez l'application, utilisez le "mode avancé", cherchez l'application que vous voulez modifier (dans votre cas : Google Maps). Développez-la. ARM vous montrera tous ses listeners -- désactivez-les.

C'est ça. Rien ne le réveille plus à moins que vous ne le démarriez explicitement. MAIS : Avant de le démarrer, il se peut que vous deviez réactiver ces listeners, ou que vous ressentiez des effets secondaires étranges (c'est ce que j'ai fait). D'un autre côté, au moins cela ne nécessite pas de redémarrage.

Pour les détails techniques, vous pouvez vérifier avec la question suivante Comment gérer les associations d'intentions avec les applications ou de plonger directement dans le Section Intents des manuels du développeur AOSP .

2voto

Michael Hampton Points 2100

En commençant par Android 4.0 Ice Cream Sandwich, Vous pouvez simplement désactiver Google Maps dans les paramètres du système. . Cela ne vous aidera pas si vous êtes toujours bloqué sur Froyo, mais d'autres pourront en tirer profit.

1voto

halr9000 Points 193

Je suggère d'utiliser la fonction de gel de la sauvegarde Titanium. page d'accueil lien avec le marché . Je crois que vous devez enregistrer l'application (6,58 $) pour pouvoir utiliser la fonction, mais je vous assure que le prix en vaut la peine si vous aimez pirater votre téléphone. L'autre raison principale de payer pour l'application (autre que de soutenir le développeur pour avoir écrit un excellent logiciel gratuit) est de pouvoir faire des installations par lots (c'est-à-dire restaurer à partir d'une sauvegarde) d'applications et de données que vous avez sauvegardées. Sinon, vous devez passer par les boîtes de dialogue standard d'installation d'applications.

Du site web sur la congélation :

Le gel des applications permet de désactiver une application (et de la rendre invisible) sans la désinstaller.

Ou vous pouvez en fait faire une désinstallation et une réinstallation. Vous trouverez peut-être des raisons de faire ça plutôt que de geler, je ne sais pas.

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