Карты 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 и переименует / переместит / очистит файл манифеста, чтобы удалить любые намерения для этого приложения.
Проблема: для этого потребуется перекомпиляция? Это определенно требует перезагрузки, что является минусом
Ответы:
Из вашего упоминания о Titanium Backup я предполагаю, что ваше устройство рутировано. Так что моя абсолютная рекомендация здесь - AutoRun Manager (и да, вам понадобится Pro - во-вторых, да, оно того стоит). После установки откройте приложение, используйте «расширенный режим», найдите приложение, которое вы хотите изменить (в вашем случае: Google Maps). Раскройте это. ARM покажет вам всех своих слушателей - отключите их.
Вот и все. Ничто не разбудит его, если вы явно не запустите его. НО: перед тем как начать, вам может понадобиться снова включить этих слушателей, или вы можете испытать странные побочные эффекты (я так и сделал). С другой стороны, по крайней мере, это не требует перезагрузки.
Что касается технических деталей, вы можете захотеть проверить с вопросом, как я могу управлять намеренными связями с приложениями , или непосредственно погрузиться в раздел Intents руководств для разработчиков AOSP .
источник
Во-первых, я предлагаю вам прекратить использовать ваши убийцы задач . Они разряжают вашу батарею больше, чем экономят ее. Система перезапускает службы, когда они должны работать, что приводит к разряду батареи.
Во-вторых, вы предполагаете, что освобождение памяти - это хорошо. Нет. Освобождение памяти не приведет к снижению расхода батареи. Что вам действительно нужно искать, так это приложения, которые используют много циклов ЦП. Это то, что разрядит вашу батарею.
Android основан на Linux. Linux всегда хочет использовать всю доступную память, потому что свободная память тратит впустую память. Система Android позаботится об освобождении памяти приложений, которые не используются, поэтому другие приложения могут использовать ее при необходимости.
Даже если вы попытаетесь уничтожить приложения, которые работают и занимают память, система либо перезапустит эти службы / приложения, что приведет к разрядке батареи, поскольку они, вероятно, имеют некоторую синхронизацию, которая происходит при запуске, или только циклы процессора, которые используются инициализировать приложение. Уничтожение приложений также приведет к медленному отображению устройства при попытке запуска приложений, потому что что-то, что обычно может быть запущено сейчас, необходимо запустить обратно, прежде чем представить вам пользовательский интерфейс приложений.
Некоторые вещи, которые могут привести к разрядке батареи, такие как GPS, Wi-Fi, Bluetooth и использование данных, будут использовать ваш ЦП гораздо чаще для обработки данных, которые передаются и принимаются. Выключение этих устройств, когда они не используются, сэкономит много заряда батареи. У меня в устройстве плохая батарея, она даже не заряжается до 94%, но я могу получить 12 или более часов от батареи, если отключу эти службы, когда они мне не нужны.
Я все время пользуюсь картами Google, и в моей статистике батареи он даже не указан как приложение, использующее ресурсы. Мой самый высокий пользователь батареи - Экран @ 31%, и самый низкий показанный GMail @ 3%. Уверяю вас, Google Maps не является причиной разрядки аккумулятора. Использование убийц задач является более вероятной причиной. Как я уже сказал, я использую карты Google для указаний почти каждый день, и он даже не входит в топ-10 приложений, использующих мою батарею.
Подробнее об убийцах задач читайте в блоге разработчиков Google Android .
Вот еще одна статья, рассказывающая о том, как убийцы задач разряжают вашу батарею.
Одна вещь, которую вы могли бы сделать, если вы действительно настроены на «остановку карт» до тех пор, пока вы не захотите ее использовать, это использовать опцию Freeze в Titanium Backup. Это по существу удалит приложение с устройства, и ни одна из служб, связанных с ним, никогда не запустится, пока вы не разморозите его.
источник
Задумывались ли вы об удалении и переустановке Карт в качестве возможного решения?
Во-первых, избавьтесь от предварительно загруженных Карт, удалив
/system/app/Maps.apk
файл:После обновления системного приложения оно становится бесполезным в папке / system / app и может быть безопасно удалено.
Затем скопируйте текущую версию Карты на свою SD-карту:
Теперь удалите приложение Карты:
Переключатель «-k» сохраняет настройки при переустановке приложения.
Теперь, чтобы вернуть Карты, просто переустановите их из резервной копии:
Вы можете автоматизировать эти шаги с помощью GScript , который позволяет создавать ярлыки для сценариев. Поэтому просто создайте один сценарий с именем «Отключить карты» с помощью команды из шага № 3, а другой - с именем «Включить карты» с помощью команды из шага № 4 (проверьте «Требуется SU?» Для обоих).
Теперь вы можете добавить 2 ярлыка GScript на домашний экран из сценариев, которые вы создали, используя обычный метод Android «Добавить ярлык» (GScript будет одним из вариантов там.)
Единственный недостаток этого метода заключается в том, что вы, скорее всего, потеряете ярлык Карты (и / или виджет) на главном экране при его удалении, что потребует его повторного добавления после переустановки. Конечно, вы все равно сможете запускать Карты из ящика приложения.
источник
Начиная с Android 4.0 Ice Cream Sandwich, вы можете просто отключить Google Maps в настройках системы . Это не поможет вам, если вы все еще застряли на Froyo, но другие могут извлечь из этого пользу.
источник
Я предлагаю использовать функцию замораживания ссылки на домашнюю страницу резервной копии Titanium . Я полагаю, что вы должны зарегистрировать приложение ($ 6,58), чтобы использовать эту функцию, но, уверяю вас, стоит того, чтобы взломать свой телефон. Другая основная причина платить за приложение (кроме поддержки разработчика в написании замечательного бесплатного программного обеспечения) заключается в том, чтобы иметь возможность выполнять пакетную установку (т.е. восстановление из резервной копии) приложений и данных, для которых вы создали резервную копию. В противном случае вам придется пройти через стандартные диалоги установки приложения.
С сайта о заморозке:
Или вы действительно можете удалить и переустановить. Возможно, вы найдете причины сделать это из-за замораживания, я не знаю.
источник
Если у вашего телефона есть опция
Settings > Applications > Development > Stop app via long-press
, вы всегда можете закрыть Google Maps таким образом, тогда этот процесс будет убит, пока вы снова не откроете приложение.источник
Выполните рутирование телефона, а затем используйте приложение «Автозапуск» из Google Play, чтобы отключить все события, которые запускают Карты. Он будет работать нормально при запуске вручную, но останется пропавшим, когда вы его убьете. Отключите все, что вам не нужно, в папке событий After Startup, чтобы еще больше сократить потребление памяти.
источник
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.