Context manager service что это

Свежие записи

Популярное

Свежие комментарии

  • Nordweb к записи Как создать резервную копию прошивки телефона?
  • Виктор к записи Как удалить рут права? – Полное удаление root прав SuperSU
  • Стас к записи Как создать резервную копию прошивки телефона?
  • VLADIMIR Zaretskyi к записи Прошивка сматфонов Xiaomi в Ubuntu
  • Сагит к записи Прошивка сматфонов Xiaomi в Ubuntu

Эта статья не претендует на уникальность, однако советы представленные в ней действительно могут помочь заставить телефон жить на аккумуляторе немного дольше.

Disclaimer: Все что вы делаете, вы делаете осознанно и на свой страх и риск. Автор не несет ответственности за работоспособность вашего аппарата!

Для выполнения всех действий требуется root

  1. Нам понадобятся:
  2. Аппарат
  3. Программа Disable Service (продвинутые юзеры могут сразу устанавливать My Android Tools. Это более расширенная программа того же автора, но для начинающих в ней много лишнего. Продвинутые и богатые могут поддержать автора, купив Pro версию).
  4. Программа Wakelock Detector
  5. Прямые руки

Делаем бекап, на случай, если что-то пойдет не так, что бы потом не было мучительно больно!
Устанавливаем программу Wakelock Detector, следуем инструкции, смотрим, как резвятся программы и сервисы, не дают спать аппарату и жрут при этом батарею. Наполняемся праведным гневом, устанавливаем Disable Service и приступаем к делу.

В последних обновлениях Google Play, Корпорация Добра (тм) решила, что все пользователи андроида озаботились своим здоровьем, накупили браслетов и занимаются фитнесом в поте лица, меряя калории и пульсы на своих аппаратах.

Так же у всех резко появились наручные дисплеи для показа погоды и СМС. Заботясь об этом, Корпорация Добра (тм) напихала специальных сервисов для связи с этой носимой дребеденью, и повелела каждые 15 минут проверять, нету ли вблизи фитнесового браслета, не начать ли считать калории и пульсы, не показать ли пришедшую СМС’ку.

Поскольку у 99% пользователей таковых приблуд нет, аппарат, проснувшись, ничего не находит и скушав заряда батареи, снова засыпает, что бы через 15 минут повторить цикл.
Приступаем.

Запускаем Disable Service.

Первую вкладку “Third party” мы пока не трогаем. Белые цифры – количество сервисов. Синие – количество запущенных сервисов, красные – количество деактивированнх сервисов. Сейчас их у нас будет.
Переходим на вкладку “System”, находим “Сервисы Google Play” – заходим туда. В левом верхнем углу нажимаем “full/short” – получаем полные названия сервисов и, пользуясь поиском (значек лупы) вводим заветные слова, сначала “fitness”, потом “wearable” со всего что содержит эти слова снимаем галочки.

Затем ищем сервисы:

Затем ограничиваем обращение сервисов к поиску местоположения:

Первая часть работы сделана.

Дальнейшие копания в этой части лучше не делать просто так. Можете наоборот увеличить расход батареи из-за введения в цикл сервисов, у которых деактивирована часть, необходимая для корректного завершения их работы. В самом худшем случае – получите бутлуп. Хотя это и не страшно, у нас же есть бекап, правда ведь? Но лучше не доводить до беды и не лезть туда, куда не нужно. Помните! Не всегда название сервиса обозначает то, что вы думаете! Например, сервис GTalkService, к программе GTalk отношения никакого не имеет!

Теперь переходим на вкладку программ “Third Party”

Здесь – полная свобода действий, но опять же – с умом.

Лично я, прибил у Viber службу InAppBillingService, которому сильно не спалось, т.к. платными звонками в этой программе не пользуюсь.
У программы 360 SmartKey отменил сервисы: CompatService и DownloadingService, они мне не нужны, кнопка работает и без них.

Для программ, которые должны периодически просыпаться (почта, погода, сообщения), лучше ничего не трогать.

Для более осмысленных действий хорошо бы прочитать ветки программ Disable Service и My Android Tools, но это для самых продвинутых юзеров. И так уже пришлось прочитать многабукафф :).

В конце – перезагружаем аппарат и при помощи Wakelock Detector наблюдаем его тихий храп. Если какая-то из программ еще мешает этому процессу – вы знаете что делать.
Так же рекомендую установить программу Greenify, для усмирения особо буйных (типа – Facebook, Facebook Messenger и т.д.).

В результате, получим реально долгоживущий аппарат без особых ограничений. Сколько и как – зависит от установленных у вас программ. У меня выигрыш составил около 30%. Поведение новых программ желательно проверять на первое время при помощи Wakelock Detector и, на основании этих данных, принимать решение о их дальнейшей судьбе.

В связи с популярностью этой темы мне бы хотелось “продемонстрировать” эффективность советов, которые приведены на сайте как в этой статье так и в других.

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

Решения конкретных задач программирования. Java, Android, JavaScript, Flex и прочее. Настройка софта под Linux, методики разработки и просто размышления.

среда, 13 ноября 2013 г.

"Вечный Service" в Andro >

Когда мы делаем приложения, мы руководствуемся самыми гумаными соображениями. Мы хотим облегчить жизнь нашим клиентам, помочь им, защитить, вооружить против любых проблем этого ужасного мира. Но клиенты почему-то не хотят покоряться нашему мудрому руководству. Закрывают наше приложения, останавливают его, находят в списке "запущенных процессов" через настройки и опять-таки останавливают. Ну, как дети малые, ей-богу 😉 Если вы в своей всеобъемлющей мудрости хотите спасти своих клиентов от их самих, вам наверняка прийдётся защититься от их жалких попыток упавлять своим смартфоном. Как же это сделать? Перенести логику в Service, чтобы закрытие приложения не останавливало его работу? Недостаточно. Сделать в нём вечный цикл, вызвать startService() в onDestroy() — тоже. В конце концов эти неразумные существа могут перезагрузить смартфон и мы утратим над ними власть не сможем помогать им. Можно, конечно ловить событие загрузки (и ещё стопицот других системных событий) и поднимать наш сервис. Однако система на то и система, чтобы жить своими, непредсказуемыми событиями, а значит никакой гарантии, что эти события произойдут когда нам нужно, увы, нет. Как же нам быть? Ответ очевиден:

Этот механизм позволяет нам не ждать милостей от природы событий от системы, а "заказывать" ей свои собственные события. Мы говорим системе "разбудить" наше приложение через Х секунд и делаем то что нам нужно в течении этих Х секунд а потом завершаем работу. Если пользователь или система убили нас раньше, их радость будет недолгой. Наше приложение возродится как феникс и продолжит свою работу. Такая схема позволяет нам гарантированно и независимо от прихотей платформы оставаться в памяти всегда. Вот как это выглядит:

Это пока только Activity c кнопкой-переключателем. Сам сервис:

И не забываем добавить в AndroidManifest (в тег application) строки:

Но, шутки в сторону

Во-первых, лучший способ помогать своим пользователям — не создавать им новых проблем. Если вы всё-таки решили висеть в памяти их смартфона, то хотя бы не держите открытыми сетевые соединения и (не дай бог) не слушайте спутники GPS. Посадите клиенту батарею и потеряете клиента.
Во-вторых, сервис всё-таки не вечный. Приложение, которое "убили" в настройках перестаёт получать Broadcast-ы а значит уже не оживёт, пока клиент не запустит его снова.
И да, не ставьте слишком короткий интервал вызова вашего сервиса. В большинстве случаев ваш сервис будет ещё жив и вы его проигнорируете, а для системы такие вызовы совсем не "бесплатны".

Контекст (Context) – это базовый абстрактный класс, реализация которого обеспечивается системой Android. Этот класс имеет методы для доступа к специфичным для конкретного приложения ресурсам и классам и служит для выполнения операций на уровне приложения, таких, как запуск активностей, отправка широковещательных сообщений, получение намерений и прочее. От класса Context наследуются такие крупные и важные классы, как Application, Activity и Service, поэтому все его методы доступны из этих классов.


Получить контекст внутри кода можно одним из следующих методов:

  • getBaseContext(получить ссылку на базовый контекст)
  • getApplicationContext(получить ссылку на объект приложения)
  • getContext (внутри активности или сервиса получить ссылку на этот объект)
  • this(то же, что и getContext)
  • MainActivity.this (внутри вложенного класса или метода получить ссылку на объект MainActivity)
  • getActivity(внутри фрагмента получить ссылку на объект родительской активности)

Контекст (Context) – это базовый абстрактный класс, реализация которого обеспечивается системой Android. Этот класс имеет методы для доступа к специфичным для конкретного приложения ресурсам и классам и служит для выполнения операций на уровне приложения, таких, как запуск активностей, отправка широковещательных сообщений, получение намерений и прочее. От класса Context наследуются такие крупные и важные классы, как Application, Activity и Service, поэтому все его методы доступны из этих классов. Источник


Получить контекст внутри кода можно одним из следующих методов:

Оцените статью
Много толка
Добавить комментарий