Czy istnieje sposób, aby na stałe wyłączyć Mapy Google, dopóki nie będą potrzebne?

24

Wydaje się, że na mapach Google zarejestrowano szaloną liczbę Intencji, a także inne sposoby rozpoczęcia.

Ponieważ jest to dość wymagająca aplikacja (szczególnie pod względem pamięci) aplikacja, bardzo chciałbym, aby na stałe nie działała, chyba że / dopóki jej nie potrzebuję. Jednak Android cały czas go uruchamia - na przykład, gdy zmienia się stan łączności (co zdarza się dość często w pomieszczeniach) lub zmienia się lokalizacja GPS / sieci.

Czy istnieje jakiś sposób zagwarantowania, że ​​Mapy Google nie uruchomią ŻADNYCH procesów, gwarantowane, dopóki nie kliknę ikony, aby celowo ją uruchomić?

Środowisko : Droid X, z systemem zrootowanym Froyo 2.2; Mam autostarty . i Advanced Task Killer, a także zainstalowana wersja Pro Titanium Backup.

Jestem dość otwarty na prawie każdą metodę, o ile

  • Jest niezawodny.

  • Pozwala mi korzystać z Google Maps ze 100% zamierzoną funkcjonalnością, kiedy JA jej potrzebuję, bez konieczności ponownej konfiguracji 5 minut pracy.

  • Idealnie, nie wymaga ode mnie ponownego uruchomienia, aby go użyć, ale ten nie jest zabójcą transakcji.

  • Wolałbym MOCNIE metodę ogólną, która miałaby zastosowanie do innych aplikacji, NIE tylko Map Google.

  • Jestem programistą z dużą dawką doświadczenia w administrowaniu systemem Unix / Linux. Innymi słowy, rozwiązania wymagające monitu powłoki lub pisania / uruchamiania skryptów powłoki (lub Perla w środowisku skryptów Androida) są bardzo mile widziane.

    Rozwiązania polegające na napisaniu własnej aplikacji Java na Androida są dopuszczalne, o ile są wystarczająco szczegółowe, aby nowi twórcy Androida mogli wykonać przynajmniej część pracy, nie tracąc przy tym w 100%.

Rzeczy, których próbowałem:

  • Zabijanie procesów za pomocą Task Killera NIE działa - wracają albo natychmiast, albo po chwili. Prawdopodobnie poprzez zamierzenia, ale nie w 100% pewne.

  • Standardowe metody pozbycia się problemów GMaps (wyloguj się ze Współrzędnych / wyłącz GPS i lokalizator sieci). Wydaje się, że to bardzo pomaga, ALE uważam, że konieczność trwałego wyłączenia GPS / lokalizatora jest niedopuszczalna - np. Nie pozwala mi na uruchamianie aplikacji Locale lub zadań Tasker opartych na ustawieniach regionalnych.

  • Zatrzymaj przez Titanium Backup Pro. Wymaga to ponownego uruchomienia i ogólnie niezbyt przyjemnego.

Możliwe podejścia, o których myślałem (ale nie wiem jak to zrobić) to:

  • Jakoś W PEŁNI wyeliminuj (wyłącz) wszystkie Intencje zarejestrowane przez Google Maps, gdy nie są potrzebne.

    Problemy: Po pierwsze, nie wiem, czego WSZYSTKIE intencje używają Mapy Google.

    Po drugie, jedynym praktycznym sposobem na osiągnięcie tego, że znam to Autostarts aplikacja, która nie jest praktycznym rozwiązaniem - to trwa ~ 5-10 minut, aby znaleźć i ponownie włączyć wszystkie zamiary Jestem świadomy (Autostarts jest bardzo słaba na os -aplikacja zarządzania intencjami - jest skoncentrowana na konkretnych intencjach), nie wspominając o możliwych intencjach, o których Autostarty NIE wiedzą (to czarna skrzynka, nie wiem, które intencje są pominięte, jeśli w ogóle).

  • Masz skrypt, który zmieni nazwę JAR-ów lub cokolwiek innego pliki wykonywalne w Androidzie (cały .APK?) Od say GoogleMaps.apkdo GoogleMaps.disabled.apki back.

    Problem: Nie wiem, czy można to zrobić na zrootowanym Froyo. Ponadto Mapy Google zostały wstępnie zainstalowane na DroidX, więc czy zmiana nazwy miałaby TYLKO wpływ na aktualizację, ale nie na oryginalną aplikację?

  • Przygotuj skrypt, który przejdzie do APK i zmień nazwę / przenieś / opróżnij plik manifestu, aby usunąć wszelkie zamiary dotyczące tej aplikacji.

    Problem: Czy wymagałoby to ponownej kompilacji? To zdecydowanie wymaga ponownego uruchomienia, co jest minusem

DVK
źródło
2
Pamiętaj, że pytam: „Czy istnieje sposób, aby na stałe wyłączyć Mapy Google, dopóki nie będą potrzebne?”. Nie pytam „Czy muszę na stałe zatrzymać uruchamianie Map Google?”, Czy „Jakie są obejścia, aby nadal korzystać z GMap i nadal mieć dobrą żywotność baterii”.
DVK
„Zamrożenie za pośrednictwem Titanium Backup Pro. Wymaga to ponownego uruchomienia komputera i ogólnie nie jest zbyt przyjemne”. To interesujące. Czy robi to dla wszystkich aplikacji, czy tylko dla czegoś bardziej osadzonego, takiego jak Mapy?
Szansa
@Chance - Moje wrażenie było takie, że dotyczy wszystkich aplikacji.
DVK,
3
Czy rzeczywiście tego próbowałeś? Wcześniej używałem Ti-Bu do zamrażania aplikacji i nie musiałem restartować się.
Szansa
@Chance - Moje aplikacje, które zamroziłem, nie przestawały ponownie pojawiać się w pamięci do momentu ponownego uruchomienia. Być może robiłem to źle - zacząłem używać TBPro dopiero niedawno.
DVK,

Odpowiedzi:

5

Z twojego wspomnienia o Titanium Backup zakładam, że twoje urządzenie jest zrootowane. Więc moim absolutnym zaleceniem jest AutoRun Manager (i tak, będziesz potrzebować Pro - po drugie tak, warto). Po zainstalowaniu otwórz aplikację, skorzystaj z „trybu zaawansowanego”, poszukaj aplikacji, którą chcesz zmodyfikować (w Twoim przypadku: Google Maps). Rozwiń to. ARM pokaże ci wszystkich swoich słuchaczy - wyłącz ich.

to jest to! Nic już go nie budzi, chyba że wyraźnie go uruchomisz. ALE: Zanim zaczniesz, może być konieczne ponowne włączenie tych słuchaczy lub możesz doświadczyć dziwnych efektów ubocznych (ja to zrobiłem). Z drugiej strony przynajmniej nie wymaga to restartu.

Aby uzyskać szczegółowe informacje techniczne, możesz sprawdzić z pytaniem Jak zarządzać powiązaniami intencjonalnymi z aplikacjami lub bezpośrednio zagłębić się w sekcję Intent podręczników programistów AOSP .

Izzy
źródło
16

Po pierwsze, sugeruję, abyś przestał używać zabójców zadań . Opróżniają baterię bardziej niż ją oszczędzają. System ponownie uruchamia usługi, gdy muszą zostać uruchomione, co powoduje zużycie baterii.

Po drugie, zakładasz, że zwolnienie pamięci jest dobrą rzeczą. Nie jest. Zwolnienie pamięci nie zmniejszy zużycia baterii. To, czego naprawdę potrzebujesz, to aplikacje wykorzystujące wiele cykli procesora. To spowoduje wyczerpanie baterii.

Android oparty jest na systemie Linux. Linux zawsze chce wykorzystać całą dostępną pamięć, ponieważ wolna pamięć to zmarnowana pamięć. System Android zajmie się zwolnieniem pamięci nieużywanych aplikacji, aby inne aplikacje mogły z niej korzystać w razie potrzeby.

Nawet jeśli spróbujesz zabić aplikacje, które działają i zajmują pamięć, system albo zrestartuje te usługi / aplikacje, co spowoduje wyczerpanie baterii, ponieważ prawdopodobnie mają one synchronizację, która dzieje się podczas uruchamiania, lub tylko cykle procesora, które są używane aby zainicjować aplikację. Zabicie aplikacji spowoduje również, że urządzenie będzie wyglądało wolno podczas próby uruchomienia aplikacji, ponieważ coś, co normalnie może być uruchomione, musi zostać ponownie uruchomione przed wyświetleniem interfejsu użytkownika aplikacji.

Niektóre rzeczy, które spowodują rozładowanie baterii, takie jak GPS, Wi-Fi, Bluetooth i wykorzystanie danych, będą znacznie częściej wykorzystywać procesor do przetwarzania przesyłanych i odbieranych danych. Wyłączenie ich, gdy nie są używane, pozwoli zaoszczędzić dużo energii baterii. Mam wadliwą baterię w swoim urządzeniu, nie będzie nawet ładować powyżej 94%, ale mogę uzyskać 12 lub więcej godzin z mojej baterii, jeśli wyłączę te usługi, gdy ich nie potrzebuję.

Korzystam z map Google przez cały czas, aw moich statystykach baterii nie jest nawet wymieniona jako aplikacja wykorzystująca zasoby. Moim najwyższym użytkownikiem baterii jest ekran @ 31%, a najniższy wyświetlany to Gmail @ 3%. Zapewniam cię, że mapy google nie są przyczyną wyczerpania baterii. Używanie zabójców zadań jest bardziej prawdopodobną przyczyną. Jak powiedziałem, używam map Google do wskazówek prawie codziennie i nie ma go nawet na liście 10 najlepszych aplikacji, które używają mojej baterii.

Więcej informacji o zabójcach zadań z blogu Google Android Developers .

Częstym nieporozumieniem na temat wielozadaniowości Androida jest różnica między procesem a aplikacją. W Androidzie nie są to ściśle powiązane jednostki: aplikacje mogą wydawać się obecne dla użytkownika bez faktycznego procesu, w którym aplikacja jest obecnie uruchomiona; wiele aplikacji może współdzielić procesy lub jedna aplikacja może korzystać z wielu procesów w zależności od swoich potrzeb; Procesy aplikacji mogą być utrzymywane przez system Android, nawet jeśli ta aplikacja nie aktywnie coś robi.

Fakt, że proces aplikacji jest „uruchomiony”, nie oznacza, że ​​aplikacja działa lub robi cokolwiek innego. Może po prostu tam być, ponieważ Android go kiedyś potrzebował i zdecydował, że najlepiej będzie go zachować na wypadek, gdyby był ponownie potrzebny. Podobnie możesz zostawić aplikację na chwilę i powrócić do niej z miejsca, w którym ją przerwałeś, i w tym czasie Android mógł potrzebować pozbyć się procesu z innych powodów.

Kluczem do tego, jak Android obsługuje aplikacje w ten sposób, jest to, że procesy nie zamykają się w sposób czysty. Gdy użytkownik opuszcza aplikację, jej proces jest utrzymywany w tle, co pozwala jej kontynuować pracę (na przykład pobieranie stron internetowych) w razie potrzeby i natychmiast przejść na pierwszy plan, jeśli użytkownik do niej wróci. Jeśli na urządzeniu nigdy nie zabraknie pamięci, system Android utrzyma wszystkie te procesy, pozostawiając wszystkie aplikacje „działające” przez cały czas.

Oczywiście istnieje ograniczona ilość pamięci i aby dostosować się do tego Androida, musisz zdecydować, kiedy pozbyć się niepotrzebnych procesów. Prowadzi to do cyklu życia procesu Androida, zasad, których używa do decydowania o tym, jak ważny jest każdy proces, a tym samym do następnego, który należy porzucić. Reguły te opierają się zarówno na tym, jak ważny jest proces dla bieżącego doświadczenia użytkownika, jak i na czasie, jaki upłynął od ostatniego użycia procesu przez użytkownika.

Gdy Android ustali, że musi usunąć proces, robi to brutalnie, po prostu go zabijając. Jądro może natychmiast odzyskać wszystkie zasoby potrzebne procesowi, bez polegania na tym, że aplikacja jest dobrze napisana i reaguje na uprzejme żądanie wyjścia. Umożliwienie jądru natychmiastowego odzyskania zasobów aplikacji znacznie ułatwia uniknięcie poważnych sytuacji braku pamięci.

Jeśli użytkownik powróci później do aplikacji, która została zabita, system Android potrzebuje sposobu, aby ponownie uruchomić ją w takim samym stanie, w jakim była ostatnio widziana, aby zachować funkcjonalność „wszystkie aplikacje działają cały czas”. Odbywa się to poprzez śledzenie części aplikacji, o których użytkownik wie (Działania), i ponowne ich uruchomienie z informacją o ostatnim stanie, w jakim były widziane. Ten ostatni stan jest generowany za każdym razem, gdy użytkownik opuszcza tę część aplikacji, a nie po jej zabiciu, aby jądro mogło później dowolnie ją zabić, nie zależąc od aplikacji, która w tym momencie zareaguje poprawnie.

Pod pewnymi względami zarządzanie procesami w Androidzie może być postrzegane jako forma przestrzeni wymiany: procesy aplikacji reprezentują pewną ilość używanej pamięci; gdy pamięć jest niska, niektóre procesy mogą zostać zabite (zamienione); gdy procesy te są ponownie potrzebne, można je ponownie uruchomić od ostatniego zapisanego stanu (zamienionego).

Oto kolejny artykuł mówiący o tym, jak zabójcy zadań zużyją baterię.

Nie używaj oprogramowania
do automatycznego zamykania zadań Krótko mówiąc, korzystanie z automatycznych zabójców zadań może powodować: nadmierne zużycie baterii (tak jakby telefon nie rozładował się wystarczająco szybko), telefon często się przegrzewa i programy się wyłączają (awaria) losowo - programy, których faktycznie chcesz użyć. Trzymaj się od nich z daleka!

Jedną z rzeczy, które możesz zrobić, jeśli naprawdę jesteś nastawiony na „zatrzymywanie map”, dopóki nie chcesz go użyć, to skorzystaj z opcji Zatrzymaj w kopii zapasowej tytanu. Spowoduje to zasadniczo usunięcie aplikacji z urządzenia i żadna z powiązanych z nią usług nigdy się nie uruchomi, dopóki jej nie odmrozisz.

Ryan Conrad
źródło
1
zwolnienie pamięci powoduje, że mój robot Droid X przeszukuje się bardzo wolno z około 30-40 MB wolnego do dość szybkiego reagowania i szybkiego działania z> 70 MB wolnego, bez żadnej aplikacji blokującej procesor w obu przypadkach. Przepraszam, ale to niezła teoria, która po prostu NIE MA zastosowania w praktyce.
DVK
Ponadto, gdy menedżer pamięci Androida zabija moją przeglądarkę internetową, tracąc WSZYSTKIE moje otwarte karty, aby zrobić miejsce dla Map Google, jest to duży spadek wydajności.
DVK
4
Mówię ci, że doświadczasz efektu placebo. wolna pamięć nie przyspiesza działania urządzenia, a wolny procesor. Zamieściłem dla ciebie kolejne odniesienie na temat zabójców zadań (bezpośrednio z Google)
Ryan Conrad
2
Użycie zabójcy zadań spowoduje drenaż, a ja wyjaśniłem dlaczego w mojej odpowiedzi. Ponadto, jeśli przeczytasz całą odpowiedź, dam ci dokładną odpowiedź na problem z tytanem, zamrażając aplikację.
Ryan Conrad
3
@ Przypadek nie, ponieważ jeśli zabijesz proces, który tak naprawdę nie działa w tym czasie, system w końcu będzie musiał ponownie uruchomić ten proces i wykona „całą jego inicjalizację”, która będzie wykorzystywała procesor. To, że proces jest uruchomiony, nie oznacza, że ​​faktycznie robi on wszystko w tym czasie.
Ryan Conrad,
11

Czy zastanawiałeś się nad odinstalowaniem i ponownym zainstalowaniem Map jako możliwym rozwiązaniem?

  1. Najpierw usuń wstępnie załadowane mapy, usuwając /system/app/Maps.apkplik:

    su  
    rm /system/app/Maps.apk
    

    Po zaktualizowaniu aplikacji systemowej jest ona bezużyteczna w folderze / system / app i można ją bezpiecznie usunąć.

  2. Następnie skopiuj aktualną wersję Map na kartę SD:

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
    
  3. Teraz odinstaluj aplikację Mapy:

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

    Przełącznik „-k” zachowuje ustawienia podczas ponownej instalacji aplikacji.

  4. Teraz, aby odzyskać Mapy, po prostu zainstaluj ponownie z kopii zapasowej:

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

Możesz zautomatyzować te kroki za pomocą GScript , który pozwala tworzyć skróty do skryptów. Więc po prostu stwórz jeden skrypt o nazwie „Wyłącz mapy” z poleceniem z kroku 3, a drugi o nazwie „Włącz mapy” z poleceniem z kroku 4 (zaznacz „Potrzebujesz SU?” Dla obu).

Teraz możesz dodać 2 skróty GScript do ekranu głównego ze skryptów utworzonych za pomocą zwykłej metody „Dodaj skrót” w Androidzie (GScript będzie jedną z dostępnych tam opcji).

Jedyną wadą tej metody jest to, że najprawdopodobniej utracisz skrót Mapy (i / lub widżet) z ekranu głównego podczas odinstalowywania, co wymaga ponownego dodania go po ponownej instalacji. Oczywiście nadal będziesz mógł uruchamiać Mapy z szuflady aplikacji.

Chahk
źródło
Czy na tę procedurę miałby negatywny wpływ fakt, że Mapy były wstępnie zainstalowane na moim DroidX? Czy to nie było w ROM? +1 za doskonały pomysł!
DVK
2
Jeśli nie usuniesz najpierw wersji systemowej APK, odinstalowanie zakończy się niepowodzeniem. Zasadniczo, gdy aplikacja systemowa otrzyma aktualizację z usługi Market, jej odpowiedni pakiet APK w folderze / system / app / można bezpiecznie usunąć.
Chahk
1
@Chank - Zakładam, że nie jest to bloatware Verizon, ale mam dostęp do usunięcia wersji systemu, dopóki mam uprawnienia roota? :)
DVK
1
Dopóki Twój telefon jest zrootowany, nie powinieneś mieć problemów z usunięciem Maps.apk z / system / app.
Chahk
2

Począwszy od Androida 4.0 Ice Cream Sandwich, możesz po prostu wyłączyć Mapy Google w ustawieniach systemu . To ci nie pomoże, jeśli nadal utkniesz w Froyo, ale inni mogą z tego skorzystać.

Michael Hampton
źródło
Czy wyłącza wszystkie powiązane usługi? (GM i Latitude itp.)?
DVK
To całkowicie wyłącza tę aplikację, w tym wszystkim, co przynosi w miarę mogę powiedzieć, że zawiera nawigacji, szerokość, itd.
Michael Hampton
1

Sugeruję użycie funkcji Freeze linku do rynku kopii zapasowych strony głównej Titanium . Uważam, że musisz zarejestrować aplikację (6,58 USD), aby móc korzystać z tej funkcji, ale zapewniam cię, że jeśli chcesz zhakować telefon, warto zapłacić tę cenę. Innym głównym powodem płacenia za aplikację (innym niż wsparcie programisty w pisaniu kawałka bezpłatnego oprogramowania) jest możliwość wykonywania wsadowych instalacji (tj. Przywracanie z kopii zapasowej) aplikacji i danych, których kopię zapasową utworzono. W przeciwnym razie musisz przejść przez standardowe okna dialogowe instalacji aplikacji.

Ze strony o zamrożeniu:

Zamrażarka aplikacji może wyłączyć aplikację (i uczynić ją niewidoczną) bez odinstalowywania

Lub możesz faktycznie odinstalować i zainstalować ponownie. Może się okazać, że istnieją powody, aby to zrobić zamiast zamrażania, nie wiem.

halr9000
źródło
Przepraszam, ale to nie jest pomocne. W moim pytaniu pod nagłówkiem „Rzeczy, które próbowałem”, punkt 3: „Zamrożenie przez Titanium Backup Pro. Wymaga to ponownego uruchomienia komputera i ogólnie niezbyt przyjemnego”.
DVK,
0

Jeśli Twój telefon ma taką opcję Settings > Applications > Development > Stop app via long-press, zawsze możesz w ten sposób zamknąć Mapy Google, a następnie ten proces również zostanie zabity do momentu ponownego otwarcia aplikacji.

Sprzedaż Dielson
źródło
-1

Zrootuj telefon, a następnie skorzystaj z aplikacji AutoStarts z Google Play, aby wyłączyć wszystkie zdarzenia uruchamiające Mapy. Będzie działał dobrze po ręcznym uruchomieniu, ale pozostanie nieobecny, gdy go zabijesz. Wyłącz wszystko, czego nie potrzebujesz w folderze zdarzeń Po uruchomieniu, aby jeszcze bardziej zmniejszyć zużycie pamięci.

Ja tutaj
źródło
1
Czy przeczytałeś dokładnie to pytanie? Wyraźnie stwierdza: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