Gibt es eine Möglichkeit, Google Maps dauerhaft zu deaktivieren, bis es benötigt wird?


24

In Google Maps sind anscheinend eine Vielzahl von Absichten sowie andere Startmöglichkeiten registriert.

Da dies eine ziemlich ressourcenhungrige App ist (besonders in Bezug auf den Speicher), möchte ich, dass sie permanent nicht ausgeführt wird, es sei denn, ich benötige sie tatsächlich. Android startet es jedoch ständig - zum Beispiel, wenn sich der Konnektivitätsstatus ändert (was für mich in Innenräumen häufig vorkommt) oder wenn sich der GPS- / Netzwerkstandort ändert.

Gibt es eine Möglichkeit, sicherzustellen, dass Google Maps garantiert keine Prozesse startet, bis ich auf ein Symbol klicke, um es absichtlich zu starten?

Umgebung : Droid X, verwurzelt mit Froyo 2.2; Ich habe Autostarts . und Advanced Task Killer sowie die Pro-Version von Titanium Backup installiert.

Ich bin ziemlich offen für fast jede Methode, solange

  • Es ist zuverlässig.

  • Damit kann ich Google Maps mit 100% der beabsichtigten Funktionalität verwenden, sobald ich es benötige, ohne 5 Minuten Arbeit für die Neukonfiguration zu benötigen.

  • Im Idealfall muss ich nicht neu starten, um es zu verwenden, aber dies ist kein Deal Killer.

  • Ich würde DRINGEND eine generische Methode bevorzugen, die auf andere Anwendungen anwendbar wäre, NICHT nur auf Google Maps.

  • Ich bin ein Softwareentwickler mit viel Erfahrung in der Unix / Linux-Systemadministration. Mit anderen Worten, Lösungen, die eine Shell-Eingabeaufforderung erfordern oder das Schreiben / Ausführen von Shell-Skripten (oder Perl in der Android-Skriptumgebung), sind äußerst willkommen.

    Lösungen, bei denen ich meine eigene Java-Android-App schreibe, sind akzeptabel, solange sie detailliert genug sind, damit ein Anfänger in der Android-Entwicklung zumindest einige Aufgaben erledigen kann, ohne zu 100% verloren zu gehen.

Dinge, die ich versucht habe:

  • Das Beenden der Prozesse mit Task Killer funktioniert NICHT - sie werden entweder sofort oder nach kurzer Zeit wiederhergestellt. Wahrscheinlich mit Absichten, aber nicht zu 100% sicher.

  • Standardmethoden zum Entfernen von GMaps-Problemen (Abmelden von Latitude / Herunterfahren von GPS und Netzwerk-Locator). Dies scheint sehr hilfreich zu sein, ABER ich finde die Notwendigkeit, GPS / Locator dauerhaft herunterzufahren, inakzeptabel - z.

  • Über Titanium Backup Pro einfrieren. Dies erfordert einen Neustart und ist im Allgemeinen nicht sehr angenehm.

Mögliche Ansätze, die ich mir überlegt habe (aber nicht weiß, wie ich vorgehen soll ) sind:

  • Irgendwie VOLLSTÄNDIG alle von Google Maps registrierten Absichten eliminieren (deaktivieren), wenn sie nicht benötigt werden.

    Probleme: Erstens weiß ich nicht, was ALLE Absichten von Google Maps verwenden.

    Zweitens ist die einzige praktische Möglichkeit, die ich kenne, die Autostarts-App, die KEINE praktikable Lösung ist. Es dauert ca. 5-10 Minuten, um alle mir bekannten Absichten zu finden und wieder zu aktivieren (Autostarts ist per se wirklich schlecht) -app Intent Management - es konzentriert sich auf pro-Intent), unabhängig von möglichen Absichten, die Autostarts NICHT kennt (es ist eine Black Box, ich weiß nicht, welche Absichten, wenn überhaupt, übersehen werden.

  • Haben Sie ein Skript, das die JARs oder was auch immer die ausführbaren Dateien auf Android sind (gesamte .APK?) Von sagen GoogleMaps.apkzu GoogleMaps.disabled.apkund zurück umbenennt .

    Problem: Ich weiß nicht, ob dies auf einem verwurzelten Froyo möglich ist. Außerdem war Google Maps auf DroidX vorinstalliert. Würde sich eine Umbenennung NUR auf das Update auswirken, nicht jedoch auf die ursprüngliche App?

  • Haben Sie ein Skript, das in die APK geht und Manifest-Datei umbenennt / verschiebt / ausleert, um alle Absichten für diese App zu entfernen.

    Problem: Wäre hierfür eine Neukompilierung erforderlich? Es ist definitiv ein Neustart erforderlich, was ein Minus ist


2
Bitte beachten Sie, dass ich gefragt werde, ob es eine Möglichkeit gibt, Google Maps dauerhaft zu deaktivieren, bis es benötigt wird. Ich frage nicht , „Muss ich Notwendigkeit dauerhaft aus starten Google Maps stoppen?“ Oder „Was sind Abhilfen GMaps am Laufen zu halten und immer noch gute Akkulaufzeit zu halten“.
DVK

"Über Titanium Backup Pro einfrieren. Dies erfordert einen Neustart und ist im Allgemeinen nicht sehr angenehm." Das ist interessant. Funktioniert es für alle Apps oder nur für eingebettete Anwendungen wie Maps?
Chance

@Chance - Mein Eindruck war, dass es für alle Apps ist.
DVK,

3
Hast du es tatsächlich versucht? Ich habe Ti-Bu bereits verwendet, um Apps einzufrieren, und ich musste nicht neu starten.
Chance

@Chance - Meine Apps, die ich eingefroren habe, haben nicht aufgehört, erneut in den Speicher zu gelangen, bis ich neu gestartet habe. Vielleicht habe ich es falsch gemacht - ich habe erst kürzlich angefangen, TBPro zu verwenden.
DVK,

Antworten:


5

Aufgrund Ihrer Erwähnung von Titanium Backup gehe ich davon aus, dass Ihr Gerät gerootet ist. Meine absolute Empfehlung hier ist AutoRun Manager (und ja, Sie werden den Pro brauchen - zweitens ja, es lohnt sich). Nachdem dies installiert ist, öffnen Sie die App, verwenden Sie den "Erweiterten Modus" und suchen Sie nach der App, die Sie ändern möchten (in Ihrem Fall: Google Maps). Es ausweiten. ARM zeigt Ihnen alle Listener an - deaktivieren Sie sie.

Das ist es. Nichts weckt es mehr, wenn Sie es nicht explizit starten. ABER: Bevor Sie es starten, müssen Sie diese Hörer möglicherweise wieder aktivieren, oder es treten merkwürdige Nebenwirkungen auf (ich habe es getan). Auf der anderen Seite ist zumindest kein Neustart erforderlich.

Technische Details erhalten Sie, wenn Sie die Frage Wie kann ich Absichtszuordnungen mit Apps verwalten oder direkt in den Abschnitt "Absichten" der AOSP-Entwicklerhandbücher eintauchen .


16

Zuerst schlage ich vor, Sie verwenden Ihre Task-Killer nicht mehr . Sie belasten Ihre Batterie mehr als sie zu schonen. Das System startet die Dienste neu, wenn sie ausgeführt werden müssen, wodurch der Akku verbraucht wird.

Zweitens gehen Sie davon aus, dass es gut ist, Speicher freizugeben. Es ist nicht. Durch die Freigabe des Speichers wird die Akkunutzung nicht verringert. Nach was Sie wirklich suchen müssen, ist die apps, die viele CPU-Zyklen verwenden. Dies ist es, was Ihre Batterie entlädt.

Android basiert auf Linux. Linux möchte immer den gesamten verfügbaren Speicherplatz nutzen, da freier Speicherplatz verschwendet wird. Das Android-System sorgt für die Freigabe des Arbeitsspeichers von Anwendungen, die nicht verwendet werden, damit andere Anwendungen ihn bei Bedarf verwenden können.

Selbst wenn Sie versuchen, Anwendungen zu beenden, die ausgeführt werden und Speicher beanspruchen, startet das System diese Dienste / Anwendungen entweder neu, was zu einer Entladung des Akkus führt, da beim Starten möglicherweise Synchronisierungen auftreten, oder es werden nur die CPU-Zyklen verwendet um die Anwendung zu initialisieren. Das Beenden der Anwendungen führt auch dazu, dass das Gerät beim Versuch, Anwendungen zu starten, langsam erscheint, da etwas, das normalerweise ausgeführt wird, erst wieder gestartet werden muss, bevor die Benutzeroberfläche der Anwendungen angezeigt wird.

Einige Dinge wie GPS, WLAN, Bluetooth und Datennutzung, die zu Batterieentladung führen, werden Ihre CPU viel stärker für die Verarbeitung der gesendeten und empfangenen Daten belasten. Wenn Sie diese ausschalten, wenn Sie sie nicht verwenden, wird viel Strom gespart. Ich habe einen defekten Akku in meinem Gerät, der sich nicht einmal mehr als 94% auflädt, aber ich kann 12 oder mehr Stunden aus meinem Akku herausholen, wenn ich diese Dienste ausschalte, wenn ich sie nicht benötige.

Ich benutze Google Maps die ganze Zeit und in meinen Akkustatistiken wird es nicht einmal als App aufgeführt, die Ressourcen verwendet. Mein höchster Akku-Benutzer ist der Bildschirm mit 31%, und der niedrigste angezeigte Wert ist GMail mit 3%. Ich kann Ihnen versichern, Google Maps ist nicht die Ursache für Ihre Batterieentladung. Der Einsatz von Task Killern ist eher die Ursache. Wie gesagt, ich verwende fast täglich Google Maps für Wegbeschreibungen, und es ist nicht einmal in den Top 10 der Apps, die meinen Akku verwenden.

Weitere Informationen zu Taskkillern finden Sie im Google Android Developers-Blog .

Ein häufiges Missverständnis über Android-Multitasking ist der Unterschied zwischen einem Prozess und einer Anwendung. In Android sind dies keine eng gekoppelten Einheiten: Anwendungen scheinen dem Benutzer präsent zu sein, ohne dass ein tatsächlicher Prozess die App ausführt. Mehrere Anwendungen können Prozesse gemeinsam nutzen, oder eine Anwendung kann abhängig von ihren Anforderungen mehrere Prozesse verwenden. Die Prozesse einer Anwendung können von Android auch dann beibehalten werden, wenn diese Anwendung nicht aktiv etwas unternimmt.

Die Tatsache, dass der Prozess einer Anwendung "ausgeführt" wird, bedeutet nicht, dass die Anwendung ausgeführt wird oder etwas unternimmt. Es kann einfach da sein, weil Android es irgendwann benötigt und sich entschieden hat, es am besten zu behalten, falls es es wieder benötigt. Ebenso können Sie eine Anwendung für eine Weile verlassen und von der Stelle, an der Sie aufgehört haben, zu ihr zurückkehren. In dieser Zeit musste Android möglicherweise den Prozess für andere Dinge loswerden.

Ein Schlüssel dafür, wie Android mit Anwendungen umgeht, ist, dass Prozesse nicht sauber heruntergefahren werden. Wenn der Benutzer eine Anwendung verlässt, wird ihr Prozess im Hintergrund ausgeführt, sodass sie bei Bedarf weiterarbeiten (z. B. Webseiten herunterladen) und sofort in den Vordergrund treten kann, wenn der Benutzer zu ihr zurückkehrt. Wenn einem Gerät nie der Arbeitsspeicher ausgeht, werden all diese Prozesse von Android aufrechterhalten, sodass alle Anwendungen die ganze Zeit "ausgeführt" werden.

Natürlich gibt es eine begrenzte Menge an Arbeitsspeicher, und um dies unterzubringen, muss Android entscheiden, wann Prozesse entfernt werden sollen, die nicht benötigt werden. Dies führt zum Prozesslebenszyklus von Android, den Regeln, nach denen entschieden wird, wie wichtig jeder Prozess ist, und somit zu den Regeln, die als nächstes fallengelassen werden sollten. Diese Regeln basieren sowohl darauf, wie wichtig ein Prozess für die aktuelle Erfahrung des Benutzers ist, als auch darauf, wie lange es her ist, seit der Prozess zuletzt vom Benutzer benötigt wurde.

Sobald Android feststellt, dass ein Prozess entfernt werden muss, wird dieser brutal ausgeführt, indem er einfach mit Gewalt beendet wird. Der Kernel kann dann sofort alle für den Prozess erforderlichen Ressourcen zurückfordern, ohne sich darauf verlassen zu müssen, dass diese Anwendung gut geschrieben ist und auf eine höfliche Aufforderung zum Beenden reagiert. Indem Sie dem Kernel erlauben, Anwendungsressourcen sofort zurückzugewinnen, können Sie schwerwiegende Situationen mit unzureichendem Arbeitsspeicher viel einfacher vermeiden.

Wenn ein Benutzer zu einem späteren Zeitpunkt zu einer Anwendung zurückkehrt, die beendet wurde, muss Android die Anwendung in demselben Status wie zuletzt gestartet werden, damit die Erfahrung "Alle Anwendungen werden ständig ausgeführt" erhalten bleibt. Dies geschieht, indem die Teile der Anwendung, die dem Benutzer bekannt sind (die Aktivitäten), nachverfolgt und mit Informationen über den letzten Status, in dem sie gesehen wurden, neu gestartet werden. Dieser letzte Status wird jedes Mal generiert, wenn der Benutzer diesen Teil verlässt der Anwendung, nicht, wenn es beendet wird, so dass der Kernel es später frei beenden kann, ohne von der Anwendung abhängig zu sein, um an diesem Punkt richtig zu reagieren.

In gewisser Weise kann das Prozessmanagement von Android als eine Art Swap-Space angesehen werden: Anwendungsprozesse repräsentieren eine bestimmte Menge an Arbeitsspeicher. Wenn der Speicher fast voll ist, können einige Prozesse abgebrochen (ausgelagert) werden. Wenn diese Prozesse erneut benötigt werden, können sie von ihrem zuletzt gespeicherten Status aus (eingelagert) neu gestartet werden.

Hier ist ein weiterer Artikel darüber, wie Taskkiller Ihre Batterie entladen.

Verwenden Sie keine automatische Task-Killing-Software
Kurz gesagt, die Verwendung von automatischen Task-Killern kann Folgendes verursachen: Übermäßige Entladung des Akkus (als ob das Telefon einen Akku nicht schnell genug entleert), häufiges Überhitzen des Telefons und Herunterfahren von Programmen (Absturz) zufällig - Programme, die Sie tatsächlich verwenden möchten. Finger weg von diesen!

Eine Sache, die Sie tun können, wenn Sie wirklich "Karten anhalten" möchten, bis Sie sie verwenden möchten, ist die Option "Einfrieren" in der Titansicherung. Dadurch wird die Anwendung im Wesentlichen vom Gerät entfernt und keiner der damit verbundenen Dienste wird jemals gestartet, bis Sie das Einfrieren aufheben.


1
Durch das Freigeben von Speicherplatz wird mein Droid X vom extrem langsamen Crawlen mit ~ 30-40 MB frei zu einem angemessenen Reaktionsvermögen und einer Geschwindigkeit von> 70 MB frei, wobei in beiden Fällen keine Apps die CPU belasten. Es tut mir leid, aber das ist eine nette Theorie, die in der Praxis einfach NICHT GILT.
DVK

Wenn der Android-Speichermanager meinen Webbrowser zum Erliegen bringt und ALLE meine geöffneten Tabs verliert, um Platz für Google Maps zu schaffen, ist dies ein großer Produktivitätsverlust.
DVK

4
Ich sage Ihnen, was Sie erleben, ist ein Placebo-Effekt. Freier Speicher beschleunigt Ihr Gerät nicht, die freie CPU jedoch. Ich habe eine weitere Referenz für Sie zum Thema Auftragskiller aufgenommen (direkt von Google)
Ryan Conrad

2
Die Verwendung von Task Killer führt zu einem Abfluss, und ich habe in meiner Antwort erklärt, warum. Wenn Sie die gesamte Antwort lesen, gebe ich Ihnen außerdem eine genaue Antwort auf Ihr Problem mit Titan, indem Sie die App einfrieren.
Ryan Conrad

3
@Chance nein, denn wenn Sie einen Prozess beenden, der gerade nicht ausgeführt wird, muss das System diesen Prozess eventuell neu starten und führt die gesamte Initialisierung durch, die die CPU beansprucht. Nur weil ein Prozess ausgeführt wird, heißt das noch lange nicht, dass er gerade etwas tut.
Ryan Conrad

11

Haben Sie darüber nachgedacht, Maps als mögliche Lösung zu deinstallieren und erneut zu installieren?

  1. Entfernen Sie zuerst die vorinstallierten Maps, indem Sie die /system/app/Maps.apkDatei löschen :

    su  
    rm /system/app/Maps.apk
    

    Sobald eine System-App aktualisiert wurde, ist sie im Ordner / system / app unbrauchbar und kann sicher gelöscht werden.

  2. Kopieren Sie dann die aktuelle Maps-Version auf Ihre SD-Karte:

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
    
  3. Deinstallieren Sie nun die Maps-App:

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

    Der Schalter "-k" behält die Einstellungen bei, wenn Sie die App neu installieren.

  4. Um Maps wieder zu erhalten, installieren Sie es einfach erneut:

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

Sie können diese Schritte über GScript automatisieren , wodurch Sie Verknüpfungen zu Skripten erstellen können. Erstellen Sie einfach ein Skript mit dem Namen "Disable Maps" mit dem Befehl aus Schritt 3 und ein anderes mit dem Namen "Enable Maps" mit dem Befehl aus Schritt 4 (aktivieren Sie "Needs SU?" Für beide).

Jetzt können Sie Ihrem Startbildschirm 2 GScript-Verknüpfungen aus den Skripten hinzufügen, die Sie mit der normalen Android-Methode "Verknüpfung hinzufügen" erstellt haben (GScript ist dort eine der Optionen.)

Der einzige Nachteil dieser Methode ist, dass Sie höchstwahrscheinlich die Maps-Verknüpfung (und / oder das Widget) von Ihrem Startbildschirm verlieren, wenn Sie es deinstallieren, und dass Sie es nach der Neuinstallation erneut hinzufügen müssen. Sie können Maps natürlich weiterhin über die App-Schublade starten.


Würde dieser Vorgang dadurch beeinträchtigt, dass Maps auf meinem DroidX vorinstalliert wurde? Oder war das nicht im ROM? +1 für eine hervorragende Idee!
DVK

2
Wenn Sie die Systemversion des APK nicht zuerst entfernen, schlägt die Deinstallation fehl. Im Allgemeinen kann die entsprechende APK in / system / app / folder sicher gelöscht werden, sobald eine System-App ein Update von Market erhält.
Chahk

1
@Chank - Ich gehe davon aus, dass ich, da es sich nicht um Verizon bloatware handelt, tatsächlich Zugriff habe, um die Systemversion zu entfernen, solange ich root bin. :)
DVK

1
Solange Ihr Telefon gerootet ist, sollten Sie keine Probleme haben, Maps.apk aus / system / app zu entfernen.
Chahk


1

Ich schlage vor, die Freeze-Funktion von Titanium Backup Homepage Market Link zu verwenden . Ich glaube, Sie müssen die App registrieren (6,58 USD), um die Funktion nutzen zu können, aber ich versichere Ihnen, es ist den Preis wert, wenn Sie Ihr Telefon hacken möchten. Der andere Hauptgrund für die Bezahlung der App (abgesehen von der Unterstützung des Entwicklers beim Schreiben einer guten, kostenlosen Software) ist die Möglichkeit, Apps und Daten, die Sie gesichert haben, stapelweise zu installieren (dh von einem Backup wiederherzustellen). Andernfalls müssen Sie die Standard-App-Installationsdialoge durchlaufen.

Von der Website über Einfrieren:

App Freezer kann eine App deaktivieren (und unsichtbar machen), ohne sie zu deinstallieren

Oder Sie können eine Deinstallation durchführen und neu installieren. Möglicherweise gibt es Gründe, dies übermäßig einzufrieren, ich weiß es nicht.


Sorry, aber das ist nicht hilfreich. In meiner Frage unter "Dinge, die ich ausprobiert habe", Punkt 3: "Über Titanium Backup Pro einfrieren. Dies erfordert einen Neustart und ist im Allgemeinen nicht sehr angenehm."
DVK

0

Wenn Ihr Telefon die Option hat Settings > Applications > Development > Stop app via long-press, können Sie Google Maps immer auf diese Weise schließen. Dieser Vorgang wird dann ebenfalls abgebrochen, bis Sie die App erneut öffnen.


-1

Rooten Sie Ihr Telefon und deaktivieren Sie mit der AutoStarts-App von Google Play alle Ereignisse, die Maps auslösen. Es läuft gut, wenn es manuell gestartet wird, bleibt aber weg, wenn Sie es töten. Deaktivieren Sie alles, was Sie im Ereignisordner After Startup nicht benötigen, um den Speicherverbrauch weiter zu reduzieren.


1
Hast du die Frage sorgfältig gelesen? Es heißt ausdrücklich: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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.