Есть ли способ навсегда отключить Google Maps, пока не потребуется?

24

Карты Google, похоже, зарегистрировали безумное количество Интентов, а также другие способы запуска.

Поскольку это довольно ресурсоемкое приложение (особенно в отношении памяти), я бы очень хотел, чтобы оно постоянно не запускалось, если / пока оно мне действительно не понадобится. Тем не менее, Android продолжает запускать его все время - например, когда меняется состояние подключения (что для меня случается довольно часто в помещении), или меняется местоположение GPS / сети.

Можно ли гарантировать, что Google Maps не запускает ЛЮБЫЕ процессы, пока я не нажму на иконку, чтобы преднамеренно запустить ее?

Среда : Droid X, работает рутированный сток Froyo 2.2; У меня есть автозапуск . и Advanced Task Killer, а также установленная Pro версия Titanium Backup.

Я достаточно открыт практически для любого метода, пока

  • Это надежно

  • Это позволяет мне использовать Карты Google со 100% -ной функциональностью, когда мне это действительно нужно, без необходимости перенастройки в течение 5 минут.

  • В идеале, не требует, чтобы я перезагружался, чтобы использовать его, но этот не убийца сделки.

  • Я бы СИЛЬНО предпочел универсальный метод, который был бы применим к другим приложениям, а не только к Google Maps.

  • Я разработчик программного обеспечения с огромным количеством опыта системного администрирования Unix / Linux. Другими словами, решения, которые требуют приглашения оболочки или написания / запуска сценариев оболочки (или Perl в среде сценариев Android), приветствуются.

    Решения, включающие в себя написание моего собственного Java-приложения для Android, являются приемлемыми, если они достаточно подробны, чем тот, что новичок в разработке для Android может выполнить хотя бы некоторую работу без потери на 100%.

Вещи, которые я пытался:

  • Уничтожение процессов с помощью Task Killer НЕ работает - они возвращаются, сразу или через некоторое время. Возможно, через Intents, но не уверен на 100%.

  • Стандартные методы избавления от проблем GMaps (выход из Локатора / отключение GPS и определение сети). Это, кажется, очень помогает, НО я считаю, что необходимость постоянного отключения GPS / локатора неприемлема - например, она не позволяет мне запускать приложение Locale или вещи Tasker на основе локали.

  • Заморозить через Titanium Backup Pro. Это требует перезагрузки и вообще не очень приятно.

Возможные подходы, о которых я подумал (но не знаю, как это сделать):

  • Каким-то образом ПОЛНОСТЬЮ устраните (отключите) все Контенты, зарегистрированные в Картах Google, когда они не нужны.

    Проблемы: Во-первых, я не знаю, что ВСЕ Intents Google Maps использует.

    Во-вторых, единственный практический способ сделать это, о котором я знаю, - это приложение «Автозапуск», которое НЕ является работоспособным решением. Требуется ~ 5-10 минут, чтобы найти и снова включить все известные мне цели (Автозапуск действительно плох -app управление намерениями - оно сосредоточено на каждом намерении), не говоря уже о возможных намерениях, о которых Autostarts НЕ знает (это черный ящик, я не знаю, какие намерения пропущены, если таковые имеются).

  • Есть скрипт , который будет переименовать JARs или независимо исполняемые файлы на Android являются (всего .apk?) От говорят GoogleMaps.apkк GoogleMaps.disabled.apkи обратно.

    Проблема: я не знаю, возможно ли это сделать на корне Froyo. Кроме того, Карты Google были предварительно установлены на DroidX, так что переименование каким-либо образом повлияет ТОЛЬКО на обновление, но не на оригинальное приложение?

  • Есть сценарий, который войдет в APK и переименует / переместит / очистит файл манифеста, чтобы удалить любые намерения для этого приложения.

    Проблема: для этого потребуется перекомпиляция? Это определенно требует перезагрузки, что является минусом

DVK
источник
2
Обратите внимание, что я спрашиваю: «Есть ли способ окончательно отключить Карты Google до тех пор, пока это не понадобится?». Я не спрашиваю , « Должен ли я необходимость постоянно остановить Google Maps от начала?», Или «Что обходные пути , чтобы продолжать работать GMaps и по- прежнему держать хорошее время автономной работы».
ДВК
«Замораживание через Titanium Backup Pro. Это требует перезагрузки и, как правило, не очень приятно». Это интересно. Делает ли он это для всех приложений, или просто для чего-то более встроенного, например для Карт?
Шанс
@ Chance - у меня сложилось впечатление, что это для всех приложений.
ДВК
3
Вы действительно пробовали это? Я использовал Ti-Bu, чтобы заморозить приложения раньше, и мне не пришлось перезагружаться.
Шанс
@Chance - Мои приложения, которые я заморозил, не переставали появляться в памяти, пока я не перезагрузился. Может быть, я делал это неправильно - я начал использовать TBPro только недавно.
ДВК

Ответы:

5

Из вашего упоминания о Titanium Backup я предполагаю, что ваше устройство рутировано. Так что моя абсолютная рекомендация здесь - AutoRun Manager (и да, вам понадобится Pro - во-вторых, да, оно того стоит). После установки откройте приложение, используйте «расширенный режим», найдите приложение, которое вы хотите изменить (в вашем случае: Google Maps). Раскройте это. ARM покажет вам всех своих слушателей - отключите их.

Вот и все. Ничто не разбудит его, если вы явно не запустите его. НО: перед тем как начать, вам может понадобиться снова включить этих слушателей, или вы можете испытать странные побочные эффекты (я так и сделал). С другой стороны, по крайней мере, это не требует перезагрузки.

Что касается технических деталей, вы можете захотеть проверить с вопросом, как я могу управлять намеренными связями с приложениями , или непосредственно погрузиться в раздел Intents руководств для разработчиков AOSP .

Иззи
источник
16

Во-первых, я предлагаю вам прекратить использовать ваши убийцы задач . Они разряжают вашу батарею больше, чем экономят ее. Система перезапускает службы, когда они должны работать, что приводит к разряду батареи.

Во-вторых, вы предполагаете, что освобождение памяти - это хорошо. Нет. Освобождение памяти не приведет к снижению расхода батареи. Что вам действительно нужно искать, так это приложения, которые используют много циклов ЦП. Это то, что разрядит вашу батарею.

Android основан на Linux. Linux всегда хочет использовать всю доступную память, потому что свободная память тратит впустую память. Система Android позаботится об освобождении памяти приложений, которые не используются, поэтому другие приложения могут использовать ее при необходимости.

Даже если вы попытаетесь уничтожить приложения, которые работают и занимают память, система либо перезапустит эти службы / приложения, что приведет к разрядке батареи, поскольку они, вероятно, имеют некоторую синхронизацию, которая происходит при запуске, или только циклы процессора, которые используются инициализировать приложение. Уничтожение приложений также приведет к медленному отображению устройства при попытке запуска приложений, потому что что-то, что обычно может быть запущено сейчас, необходимо запустить обратно, прежде чем представить вам пользовательский интерфейс приложений.

Некоторые вещи, которые могут привести к разрядке батареи, такие как GPS, Wi-Fi, Bluetooth и использование данных, будут использовать ваш ЦП гораздо чаще для обработки данных, которые передаются и принимаются. Выключение этих устройств, когда они не используются, сэкономит много заряда батареи. У меня в устройстве плохая батарея, она даже не заряжается до 94%, но я могу получить 12 или более часов от батареи, если отключу эти службы, когда они мне не нужны.

Я все время пользуюсь картами Google, и в моей статистике батареи он даже не указан как приложение, использующее ресурсы. Мой самый высокий пользователь батареи - Экран @ 31%, и самый низкий показанный GMail @ 3%. Уверяю вас, Google Maps не является причиной разрядки аккумулятора. Использование убийц задач является более вероятной причиной. Как я уже сказал, я использую карты Google для указаний почти каждый день, и он даже не входит в топ-10 приложений, использующих мою батарею.

Подробнее об убийцах задач читайте в блоге разработчиков Google Android .

Распространенным заблуждением относительно многозадачности Android является разница между процессом и приложением. В Android они не являются тесно связанными объектами: приложения могут показаться пользователю без реального процесса, выполняющего приложение; несколько приложений могут совместно использовать процессы, или одно приложение может использовать несколько процессов в зависимости от своих потребностей; Android-процесс может поддерживать процесс (ы) приложения, даже если это приложение не выполняет каких-либо активных действий.

Тот факт, что вы можете видеть процесс приложения "работающим", не означает, что приложение работает или что-то делает. Это может быть просто потому, что Android в какой-то момент нуждался в этом, и решил, что было бы лучше сохранить его на случай, если оно понадобится снова. Аналогично, вы можете ненадолго оставить приложение и вернуться к нему с того места, где остановились, и в это время Android, возможно, понадобилось избавиться от процесса для других целей.

Ключом к тому, как Android обрабатывает приложения таким образом, является то, что процессы не закрываются чисто. Когда пользователь покидает приложение, его процесс остается в фоновом режиме, что позволяет ему продолжать работать (например, загружать веб-страницы), если это необходимо, и сразу выходить на передний план, если пользователь возвращается к нему. Если устройству никогда не хватает памяти, то Android будет поддерживать все эти процессы, по-настоящему оставляя все приложения «работающими» все время.

Конечно, объем памяти ограничен, и для приспособления к этому Android необходимо решить, когда избавляться от ненужных процессов. Это приводит к жизненному циклу процесса Android, правилам, которые он использует для определения важности каждого процесса и, следовательно, следующего, который следует отбросить. Эти правила основаны как на том, насколько важен процесс для текущего опыта пользователя, так и на том, сколько времени прошло с тех пор, как этот процесс в последний раз был необходим пользователю.

Как только Android решает, что ему нужно удалить процесс, он делает это жестоко, просто убивая его. Затем ядро ​​может немедленно вернуть все ресурсы, необходимые для процесса, не полагаясь на то, что приложение хорошо написано и реагирует на вежливый запрос на выход. Позволяя ядру немедленно восстанавливать ресурсы приложения, намного легче избежать серьезных нехваток памяти.

Если впоследствии пользователь возвращается к убитому приложению, Android требуется способ перезапустить его в том же состоянии, в котором оно было в последний раз, чтобы сохранить опыт «все приложения работают постоянно». Это делается путем отслеживания частей приложения, о которых пользователь знает (Действия), и перезапуска их с информацией о последнем состоянии, в котором они были замечены. Это последнее состояние генерируется каждый раз, когда пользователь покидает эту часть приложения, а не когда оно убито, так что ядро ​​позже может свободно убить его, не завися от приложения, чтобы правильно ответить в этот момент.

В некотором смысле управление процессами в Android можно рассматривать как форму пространства подкачки: процессы приложений представляют собой определенный объем используемой памяти; когда памяти мало, некоторые процессы могут быть убиты (выгружены); когда эти процессы снова нужны, их можно перезапустить из их последнего сохраненного состояния (поменять местами).

Вот еще одна статья, рассказывающая о том, как убийцы задач разряжают вашу батарею.

Не используйте программное обеспечение автоматического уничтожения заданий.
Короче говоря, использование автоматических убийц заданий может привести к: чрезмерному разряду батареи (как будто телефон недостаточно быстро разряжает батарею), частому перегреву телефона и отключению программ (сбой) случайно - программы, которые вы действительно хотите использовать. Держись подальше от них!

Одна вещь, которую вы могли бы сделать, если вы действительно настроены на «остановку карт» до тех пор, пока вы не захотите ее использовать, это использовать опцию Freeze в Titanium Backup. Это по существу удалит приложение с устройства, и ни одна из служб, связанных с ним, никогда не запустится, пока вы не разморозите его.

Райан Конрад
источник
1
Освобождение памяти приводит к тому, что мой Droid X сканирует чрезвычайно медленно с ~ 30-40 Мбайт свободного времени до разумно отзывчивого и быстрого с> 70 Мбайт свободного места, без приложений, загружающих ЦП в любом случае. Извините, но это хорошая теория, которая просто не применяется на практике.
ДВК
Кроме того, когда диспетчер памяти Android убивает мой веб-браузер, теряя ВСЕ мои открытые вкладки, чтобы освободить место для Карт Google, это очень сильно сказывается на производительности.
ДВК
4
Я говорю вам, что вы испытываете эффект плацебо. свободная память не заставляет ваше устройство работать быстрее, свободная загрузка процессора. Я включил еще одну ссылку для вас на тему убийц задач (справа от Google)
Райан Конрад
2
Использование задачи убийцы вызовет утечку, и я объяснил почему в своем ответе. Кроме того, если вы прочитаете весь ответ, я дам вам точный ответ на вашу проблему с использованием титана, заморозив приложение.
Райан Конрад
3
@ Вероятно, нет, потому что если вы убьете процесс, который на самом деле не запущен в то время, системе в конечном итоге придется запустить этот процесс обратно, и она выполнит «всю свою инициализацию», которая будет использовать процессор. То, что процесс запущен, не означает, что он действительно что-то делает в данный момент.
Райан Конрад
11

Задумывались ли вы об удалении и переустановке Карт в качестве возможного решения?

  1. Во-первых, избавьтесь от предварительно загруженных Карт, удалив /system/app/Maps.apkфайл:

    su  
    rm /system/app/Maps.apk
    

    После обновления системного приложения оно становится бесполезным в папке / system / app и может быть безопасно удалено.

  2. Затем скопируйте текущую версию Карты на свою SD-карту:

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
    
  3. Теперь удалите приложение Карты:

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

    Переключатель «-k» сохраняет настройки при переустановке приложения.

  4. Теперь, чтобы вернуть Карты, просто переустановите их из резервной копии:

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

Вы можете автоматизировать эти шаги с помощью GScript , который позволяет создавать ярлыки для сценариев. Поэтому просто создайте один сценарий с именем «Отключить карты» с помощью команды из шага № 3, а другой - с именем «Включить карты» с помощью команды из шага № 4 (проверьте «Требуется SU?» Для обоих).

Теперь вы можете добавить 2 ярлыка GScript на домашний экран из сценариев, которые вы создали, используя обычный метод Android «Добавить ярлык» (GScript будет одним из вариантов там.)

Единственный недостаток этого метода заключается в том, что вы, скорее всего, потеряете ярлык Карты (и / или виджет) на главном экране при его удалении, что потребует его повторного добавления после переустановки. Конечно, вы все равно сможете запускать Карты из ящика приложения.

Chahk
источник
Повлияет ли на эту процедуру тот факт, что Карты были предустановлены на моем DroidX? Или этого не было в ROM? +1 за отличную идею!
ДВК
2
Если вы сначала не удалите системную версию APK, удаление не удастся. Как правило, как только системное приложение получает обновление от Маркета, его соответствующий APK в папке / system / app / можно безопасно удалить.
Чахк
1
@Chank - я предполагаю, что, не являясь вирусом Verizon, у меня действительно есть доступ к удалению системной версии, пока я получаю root? :)
DVK
1
Пока ваш телефон рутирован, у вас не должно быть проблем с удалением Maps.apk из / system / app.
Чахк
2

Начиная с Android 4.0 Ice Cream Sandwich, вы можете просто отключить Google Maps в настройках системы . Это не поможет вам, если вы все еще застряли на Froyo, но другие могут извлечь из этого пользу.

Майкл Хэмптон
источник
Отключает ли он все связанные сервисы? (GM, Локатор и т. Д.)
ДВК,
Он отключает это приложение полностью, включая все , что приносит Насколько я могу сказать, что включает в себя навигацию, широта и т.д..
Michael Hampton
1

Я предлагаю использовать функцию замораживания ссылки на домашнюю страницу резервной копии Titanium . Я полагаю, что вы должны зарегистрировать приложение ($ 6,58), чтобы использовать эту функцию, но, уверяю вас, стоит того, чтобы взломать свой телефон. Другая основная причина платить за приложение (кроме поддержки разработчика в написании замечательного бесплатного программного обеспечения) заключается в том, чтобы иметь возможность выполнять пакетную установку (т.е. восстановление из резервной копии) приложений и данных, для которых вы создали резервную копию. В противном случае вам придется пройти через стандартные диалоги установки приложения.

С сайта о заморозке:

Замораживатель приложений может отключить приложение (и сделать его невидимым), не удаляя его

Или вы действительно можете удалить и переустановить. Возможно, вы найдете причины сделать это из-за замораживания, я не знаю.

halr9000
источник
Извините, но это не полезно. В моем вопросе под «Вещи, которые я пробовал», пункт № 3: «Заморозка через Titanium Backup Pro. Это требует перезагрузки и, как правило, не очень приятно».
ДВК
0

Если у вашего телефона есть опция Settings > Applications > Development > Stop app via long-press, вы всегда можете закрыть Google Maps таким образом, тогда этот процесс будет убит, пока вы снова не откроете приложение.

Дилсон Сэйлс
источник
-1

Выполните рутирование телефона, а затем используйте приложение «Автозапуск» из Google Play, чтобы отключить все события, которые запускают Карты. Он будет работать нормально при запуске вручную, но останется пропавшим, когда вы его убьете. Отключите все, что вам не нужно, в папке событий After Startup, чтобы еще больше сократить потребление памяти.

Я здесь
источник
1
Вы внимательно прочитали вопрос? В нем прямо говорится: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.
ДВК