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

24

Google maps semble avoir une quantité insensée d'intentions enregistrées, ainsi que d'autres façons de commencer.

Comme il s'agit d'une application assez gourmande en ressources (en particulier en termes de mémoire), je souhaiterais vivement qu'elle ne fonctionne pas en permanence à moins que / jusqu'à ce que j'en ai réellement besoin. Cependant, Android continue de le démarrer tout le temps - par exemple, lorsque l'état de la connectivité change (ce qui pour moi se produit assez fréquemment à l'intérieur) ou lorsque le GPS / l'emplacement du réseau change.

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

Environnement : Droid X, exécutant le stock enraciné Froyo 2.2; J'ai des démarrages automatiques . et Advanced Task Killer, ainsi que la version Pro de Titanium Backup installée.

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

  • C'est fiable.

  • Il me permet d'utiliser Google Maps avec des fonctionnalités 100% prévues une fois que j'en ai besoin, sans nécessiter 5 minutes de travail pour reconfigurer.

  • Idéalement, ne nécessite pas que je redémarre pour l'utiliser, mais celui-ci n'est pas un tueur de deal.

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

  • Je suis 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 / l'exécution de scripts shell (ou Perl dans Android Scripting Environment) sont extrêmement bienvenues.

    Les solutions impliquant l'écriture de ma propre application Java Android sont acceptables tant qu'elles sont suffisamment détaillées qu'un débutant en développement Android total peut faire au moins un peu de travail sans être perdu à 100%.

Choses que j'ai essayées:

  • Tuer les processus via Task Killer ne fonctionne PAS - ils reviennent, immédiatement ou dans peu de temps. Probablement via Intents mais pas sûr à 100%.

  • Méthodes standard pour se débarrasser des problèmes de GMaps (déconnectez-vous de Latitude / arrêtez le GPS et le localisateur de réseau). Cela semble aider beaucoup MAIS je trouve que la nécessité d'arrêter définitivement le GPS / localisateur est inacceptable - par exemple, cela ne me permettra pas d'exécuter l'application Locale ou les choses Tasker basées sur les paramètres régionaux.

  • Geler via Titanium Backup Pro. Cela nécessite un redémarrage et généralement peu agréable.

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

  • D'une manière ou d'une autre, éliminer (désactiver) ENTIÈREMENT toutes les intentions enregistrées par Google Maps lorsqu'elles ne sont pas nécessaires.

    Problèmes: tout d'abord, je ne sais pas à quoi servent TOUTES les intentions de Google Maps.

    Deuxièmement, la seule façon pratique de le faire que je sache est l'application Autostarts qui n'est PAS une solution viable - il faut environ 5 à 10 minutes pour trouver et réactiver toutes les intentions que je connais (les démarrages automatiques sont vraiment médiocres à -app intention management - c'est centré sur l'intention), peu importe les intentions possibles que Autostarts ne connaît PAS (c'est une boîte noire, je ne sais pas quelles intentions sont manquées, le cas échéant).

  • Avoir un script qui renommera les fichiers JAR ou quels que soient les fichiers exécutables sur Android (.APK entier?) De say GoogleMaps.apkto GoogleMaps.disabled.apket back.

    Problème: je ne sais pas si c'est possible de faire sur un Froyo enraciné. De plus, Google Maps était préinstallé sur DroidX, donc le changement de nom affecterait-il UNIQUEMENT la mise à jour mais pas l'application d'origine?

  • Ayez un script qui ira dans l'APK et renommer / déplacer / vider le fichier manifeste pour supprimer toute intention pour cette application.

    Problème: cela nécessiterait-il une recompilation? Cela nécessite certainement un redémarrage qui est un inconvénient

DVK
la source
2
Veuillez noter que je demande "Existe-t-il un moyen de désactiver définitivement Google Maps en cas de besoin?". Je ne demande pas « Dois - je besoin d'arrêter définitivement de Google Maps à partir? » Ou « Quelles sont les solutions de contournement pour continuer à fonctionner GMaps et toujours garder une bonne autonomie de la batterie ».
DVK
"Geler via Titanium Backup Pro. Cela nécessite un redémarrage et généralement pas très agréable." C'est intéressant. Le fait-il pour toutes les applications, ou simplement pour quelque chose de plus intégré, comme Maps?
Chance
@Chance - J'ai l'impression que c'est pour toutes les applications.
DVK
3
L'avez-vous essayé? J'ai déjà utilisé Ti-Bu pour figer des applications, et je n'ai pas eu à redémarrer.
Chance
@Chance - Mes applications que j'ai gelées n'ont pas cessé de réapparaître en mémoire jusqu'à ce que je redémarre. Je me trompais peut-être - je n'ai commencé à utiliser TBPro que récemment.
DVK

Réponses:

5

D'après votre mention de Titanium Backup, je suppose que votre appareil est enraciné. Donc, ma recommandation absolue ici est AutoRun Manager (et oui, vous aurez besoin du Pro - deuxième oui, ça vaut le coup). Une fois installé, ouvrez l'application, utilisez le "mode avancé", recherchez l'application que vous souhaitez modifier (dans votre cas: Google Maps). Développez-le. ARM vous montrera tous ses écouteurs - 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, vous devrez peut-être réactiver ces écouteurs, ou vous pouvez rencontrer des effets secondaires étranges (je l'ai fait). De l'autre côté, au moins cela ne nécessite pas de redémarrage.

Pour des détails techniques, vous voudrez peut-être recouper la question Comment puis-je gérer les associations d'intentions avec les applications , ou plonger directement dans la section Intentions des manuels du développeur AOSP .

Izzy
la source
16

Tout d'abord, je vous suggère d'arrêter d'utiliser vos tueurs de tâches . Ils déchargent votre batterie plus que la sauver. Le système redémarre les services lorsqu'ils doivent s'exécuter, ce qui entraîne une utilisation de la batterie.

Deuxièmement, vous supposez que libérer de la mémoire est une bonne chose. Ce n'est pas. 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 chargera 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 en cours d'exécution et occupant 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 tout simplement les cycles de processeur utilisés. pour initialiser l'application. La suppression des applications entraînera également un ralentissement de l'appareil lors de la tentative de démarrage des applications, car quelque chose qui pourrait normalement s'exécuter maintenant doit être redémarré avant de vous présenter l'interface utilisateur des applications.

Certaines choses qui entraîneront une décharge de la batterie comme le GPS, le wifi, le bluetooth et l'utilisation des données vont beaucoup plus utiliser votre CPU pour traiter les données qui sont transmises et reçues. Les désactiver lorsqu'ils ne sont pas utilisés permettra d'économiser beaucoup de batterie. J'ai une mauvaise batterie dans mon appareil, elle ne se chargera 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 tout le temps, et dans mes statistiques de batterie, il n'est même pas répertorié comme une application utilisant des ressources. Mon utilisateur de batterie le plus élevé est l'écran @ 31%, et le plus bas affiché est GMail @ 3%. Je peux vous assurer que Google Maps n'est pas la cause de la décharge de votre batterie. L'utilisation de tueurs de tâches est probablement la cause. Comme je l'ai dit, j'utilise Google Maps pour les directions presque tous les jours, et ce n'est même pas dans la liste des 10 meilleures applications qui utilisent ma batterie.

Plus d'informations sur les tueurs de tâches sur le blog Google Android Developers .

Un malentendu courant à propos du multitâche Android est la différence entre un processus et une application. Dans Android, ce ne sont pas des entités étroitement couplées: les applications peuvent sembler présentes à l'utilisateur sans qu'un processus réel exécute actuellement l'application; 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 ne fait pas activement quelque chose.

Le fait que vous puissiez voir le processus d'une application "en cours d'exécution" ne signifie pas que l'application est en cours d'exécution ou ne fait rien. Il peut simplement être là parce qu'Android en avait besoin à un moment donné et a décidé qu'il serait préférable de le garder au cas où il en aurait besoin à nouveau. De même, vous pouvez laisser une application pendant un petit moment et y revenir d'où vous vous étiez arrêté, et pendant ce temps, Android pourrait avoir besoin de se débarrasser du processus pour d'autres choses.

Une clé de la façon dont Android gère 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 conservé en arrière-plan, ce qui lui permet de continuer à travailler (par exemple en téléchargeant des pages Web) si nécessaire, et de revenir immédiatement au premier plan si l'utilisateur y revient. Si un appareil ne manque jamais de mémoire, Android conservera tous ces processus, laissant vraiment toutes les applications "en cours d'exécution" tout le temps.

Bien sûr, la quantité de mémoire est limitée, et pour s'adapter à cet Android, il faut décider quand se débarrasser des processus qui ne sont pas nécessaires. Cela conduit au cycle de vie des processus d'Android, aux règles qu'il utilise pour décider de l'importance de chaque processus et donc du suivant 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, ainsi que sur la durée écoulée depuis la dernière utilisation du processus par l'utilisateur.

Une fois qu'Android détermine qu'il doit supprimer un processus, il le fait brutalement, le tue simplement de force. Le noyau peut alors immédiatement récupérer toutes les ressources nécessaires au processus, sans compter que cette application est bien écrite et répond à une demande polie de sortie. Le fait de permettre au noyau de récupérer immédiatement les ressources d'application permet d'éviter plus facilement les situations de mémoire insuffisante.

Si un utilisateur retourne plus tard à une application qui a été supprimée, Android a besoin d'un moyen de la relancer dans le même état que la dernière fois, afin de préserver l'expérience «toutes les applications s'exécutent tout le temps». Cela se fait en gardant une trace des parties de l'application dont l'utilisateur a connaissance (les activités) et en les redémarrant 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, pas quand il est tué, de sorte que le noyau puisse ensuite le tuer librement sans dépendre de l'application pour répondre correctement à ce point.

À certains égards, 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 utilisée; lorsque la mémoire est insuffisante, certains processus peuvent être tués (échangés); lorsque ces processus sont à nouveau nécessaires, ils peuvent être redémarrés à partir de leur dernier état enregistré (échangés).

Voici un autre article expliquant comment les tueurs de tâches videront votre batterie.

N'utilisez pas le logiciel de suppression automatique des tâches
Pour faire court, l'utilisation de tueurs automatiques peut entraîner: une décharge excessive de la batterie (comme si le téléphone ne vidange pas déjà une batterie assez rapidement), le téléphone surchauffe souvent et les programmes s'arrêtent (crash) au hasard - les programmes que vous souhaitez réellement utiliser. Restez à l'écart de ceux-ci!

Une chose que vous pourriez faire si vous êtes vraiment déterminé à "arrêter les cartes" jusqu'à ce que vous vouliez l'utiliser est d'utiliser l'option Freeze dans la sauvegarde en titane. Cela supprimera essentiellement l'application de l'appareil et aucun des services qui lui sont associés ne démarrera jusqu'à ce que vous la décongeliez.

Ryan Conrad
la source
1
libérer de la mémoire prend mon Droid X de ramper extrêmement lentement avec ~ 30-40 Mo gratuit à être raisonnablement réactif et rapide avec> 70 Mo gratuit, sans aucune application monopolisant le CPU dans les deux cas. Je suis désolé, mais c'est une bonne partie de la théorie qui NE S'APPLIQUE PAS dans la pratique.
DVK
De plus, lorsque le gestionnaire de mémoire Android tue mon navigateur Web en perdant TOUS mes onglets ouverts pour faire de la place à Google Maps, c'est un gros coup de productivité.
DVK
4
Je vous le dis, ce que vous ressentez est un effet placebo. la mémoire libre ne fait pas fonctionner votre appareil plus rapidement, le CPU libre le fait. J'ai inclus une autre référence pour vous sur le sujet des tueurs de tâches (directement de Google)
Ryan Conrad
2
L'utilisation du tueur de tâches entraînera une fuite, et j'ai expliqué pourquoi dans ma réponse. En plus de cela, si vous lisez la réponse entière, je vous donne une réponse exacte à votre problème d'utilisation du titane en gelant l'application.
Ryan Conrad
3
@Chance non, car si vous tuez un processus qui n'est pas réellement en cours d'exécution à ce moment-là, le système devra éventuellement redémarrer ce processus et il fera "toute son initialisation" qui va utiliser le CPU. Ce n'est pas parce qu'un processus est en cours d'exécution qu'il fait réellement quelque chose à ce moment-là.
Ryan Conrad
11

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 /system/app/Maps.apkfichier:

    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 lorsque vous réinstallez l'application.

  4. Maintenant, pour récupérer Maps, réinstallez-le simplement à 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é "Désactiver les cartes" avec la commande de l'étape 3, et un autre nommé "Activer les cartes" avec la commande de l'étape 4 (cochez "Besoin de 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 "Ajouter un raccourci" d'Android (GScript sera l'une des options là-bas.)

Le seul inconvénient de cette méthode est que vous perdrez probablement le raccourci Maps (et / ou widget) de votre écran d'accueil lorsque vous le désinstallez, vous obligeant à le rajouter après la réinstallation. Bien sûr, vous pourrez toujours lancer Maps à partir du tiroir de l'application.

Chahk
la source
Cette procédure serait-elle affectée négativement par le fait que Maps a été préinstallé sur mon DroidX? Ou ce n'était pas dans la ROM? +1 pour une excellente idée!
DVK
2
Si vous ne supprimez pas d'abord la version système de l'APK, la désinstallation échouera. Généralement, une fois qu'une application système reçoit une mise à jour de Market, son fichier APK correspondant dans / system / app / folder peut être supprimé en toute sécurité.
Chahk
1
@Chank - Je suppose que, n'étant pas un bloatware Verizon, j'ai en fait accès pour supprimer la version du système tant que je suis root? :)
DVK
1
Tant que votre téléphone est enraciné, vous ne devriez avoir aucun problème à supprimer Maps.apk de / system / app.
Chahk
2

À partir d'Android 4.0 Ice Cream Sandwich, vous pouvez simplement désactiver Google Maps dans les paramètres système . Cela ne vous aidera pas si vous êtes toujours bloqué sur Froyo, mais d'autres peuvent en tirer des avantages.

Michael Hampton
la source
Désactive-t-il tous les services associés? (GM et Latitude etc ...)?
DVK
Il désactive complètement cette application, y compris tout ce qu'elle apporte. Pour autant que je sache, cela inclut la navigation, la latitude, etc.
Michael Hampton
1

Je suggère d'utiliser la fonction Freeze du lien de marché de la page d'accueil de sauvegarde Titanium . Je pense que vous devez enregistrer l'application (6,58 $) pour utiliser la fonctionnalité, mais je vous assure que cela vaut le prix si vous souhaitez pirater votre téléphone. L'autre raison principale de payer pour l'application (autre que pour aider le développeur à écrire un beau logiciel gratuit) est de pouvoir effectuer des installations par lots (c'est-à-dire la restauration à partir d'une sauvegarde) des applications et des données que vous avez sauvegardées. Sinon, vous devez passer par les boîtes de dialogue d'installation d'application standard.

Depuis le site Web sur le gel:

Le congélateur d'applications peut désactiver une application (et la rendre invisible) sans la désinstaller

Ou vous pouvez réellement désinstaller et réinstaller. Vous trouverez peut-être qu'il y a des raisons de le faire par congélation, je ne sais pas.

halr9000
la source
Désolé, mais ce n'est pas utile. Dans ma question, sous "Ce que j'ai essayé", puce n ° 3: "Geler via Titanium Backup Pro. Cela nécessite un redémarrage et généralement pas très agréable."
DVK
0

Si votre téléphone en a la possibilité Settings > Applications > Development > Stop app via long-press, vous pouvez toujours fermer Google Maps de cette façon, ce processus sera également tué jusqu'à ce que vous ouvriez à nouveau l'application.

Ventes Dielson
la source
-1

Rooter votre téléphone puis utilisez l'application AutoStarts de Google Play pour désactiver tous les événements qui déclenchent Maps. Il fonctionnera correctement lorsqu'il est démarré manuellement, mais il disparaîtra lorsque vous le tuerez. Désactivez tout ce dont vous n'avez pas besoin dans le dossier d'événements Après le démarrage pour réduire davantage la consommation de mémoire.

Moi ici
la source
1
Avez-vous lu attentivement la question? Il indique explicitement:Second, the only practical way of doing that that I know of is Autostarts app which is NOT a workable solution - it takes ~5-10 mins to find and re-enable all the intents I am aware of (Autostarts is really poor at per-app intent management - it's centered on per-intent), never mind possible intents that Autostarts does NOT know about (it's a black box, I don't know which intents are missed if any.
DVK