Почему не стоит использовать Таск Киллеры на Андроиде
Привет, друзья! Сегодня мы обратимся к крайне спорной и интересной теме - использовании таск киллеров на наших андрофонах. Вашему вниманию представляется перевод весьма популярной в интернетах статьи, написанной мистером flipz для сайта geekfor.me. ...
Привет, друзья! Сегодня мы обратимся к крайне спорной и интересной теме - использовании таск киллеров на наших андрофонах. Вашему вниманию представляется перевод весьма популярной в интернетах статьи, написанной мистером flipz для сайта geekfor.me. Этот вопрос поднимается снова и снова. Люди говорят, что программы выполняются в фоновом режиме и считают, что они тратят их батарейку или сжирают всю память. И их естественная реакция - установить программу, которая может убивать таски. Но есть один момент... скорее всего вы нанесете больше вреда, чем принесете пользы, убивая таски, которые не готовы завершиться. У меня была та же проблема когда я только купил свой CDMA Hero. На нем крутилась целая куча разных программ, а я не хотел этого и постоянно их убивал. Через несколько недель я осознал, что если я перестану пользоваться таск киллером и полностью его удалю, то мой телефон на самом деле начнет работать лучше! Приложения стали закрываться сами и появилось впечатление, что все стало работать лучше. Я понимаю, что, возможно, есть краткосрочные выгоды от удаления таска, но все равно найдите время прочесть эту статью. Вот немного информации прямо со страницы для разаботчиков под Android. Важные части я отметил жирным шрифтом. Здесь довольно много написано, но я правда считаю, что это важно. Если вы хотите всех подробностей, то читайте по этой ссылке на страницу разработчиков. Если же вы хотите версию "ниасилил, слишком многа букаф", то проскрольте до конца страницы. По умолчанию каждое приложение выполняется в своем отдельном Linux процессе. Android запускает процесс, когда надо выполнить любой код приложения и завершает процесс, когда он больше не нужен и системные ресурсы требуются другим приложениям. Поставщик содержимого (СontentProvider) активен только во время ответа на запрос от ContentResolver. Подписчики широковещательных сообщений (Broadcast receivers) активны только во время ответа на широковещательное сообщение. Таким образом, нет никакой необходимости принудительно завершать эти компоненты.Активности (Activities), с другой стороны, представляют собой пользовательский интерфейс. Они являются долгосрочными сеансами общения с пользователем и могут сохранять активность даже в ждущем режиме пока взаимодействие продолжается. Также и сервисы могут продолжать работать длительное время. Поэтому в системе Android есть встроенные методы завершения активностей и сервисов:
- Активность (Activity) можно завершить, вызвав ее метод finish(). Одна активность (Activity) может завершить другую (порожденную первой с помощью метода startActivityForResult()), вызвав метод finishActivity() последней.
- Сервис можно остановить, вызвав его метод stopSelf() или вызвав Context.stopService().
Жизненный цикл активности (Activity)
- Активном или выполняемом - когда находится на экране на первом плане (наверху стека активностей текущего приложения). Именно в этой активности пользователь выполняет свои действия.
- В приостановленном состоянии (paused), если с нее ушел фокус, но она до сих пор видна пользователю. Это происходит в том случае, когда сверху находится другая активность, которая либо прозрачна, либо занимает не весь экран, так что приостановленная активность из-под нее частично видна. Приостановленная активность - полностью действующая (содержит всю информацию о своем состоянии и содержащихся элементах и связана с менеджером окон (window manager), но может быть убита системой в ситуации жесткой нехватки памяти.
- В остановленном состоянии (stopped), если она полностью закрыта другой активностью. В ней все еще хранится информация о состоянии и содержащихся элементах. Но она больше не видна пользователю и чаще всего будет уничтожена системой, когда память будет нужна еще где-то.
- В систему Андроид встроено автоматическое удаление задач при нехватке памяти.
- В систему Андроид встроено автоматическое удаление задач, закончивших свое выполнение.
- В систему Андроид встроено автоматическое удаление задач, к которым долгое время не обращались.
- Большинство сервисов (возможно выполняющихся в фоне) используют крайне мало памяти в том случае, если они не выполняют какую-то трудоемкую задачу.
- Поставщик содержимого (СontentProvider) интенсивно работает только когда получает сообщение о необходимости предоставления своего содержимого. Во все остальное время он использует очень мало памяти.
- Унитожение процесса, не готового к этому, приводит только к тому, что он должен снова подгрузиться и начать все с самого начала, когда вновь понадобится.
- Из-за того, что задача скорее всего выполняется в фоне не без причины, ее уничтожение приветдет лишь к ее перезапуску, когда активность, использующая ее вновь к ней обратится. И ей не останется ничего кроме как начать все с начала.
- Уничтожение определенных процессов может иметь нежелательные побочные эффекты. Неполученные смски, непрозвонившие будильники и вылетающие программы - только небольшая их часть.
- Единственный верный способ запретить чему-то выполняться на вашем телефоне - деинсталлировать .apk.
- Большинство приложений сами завершают работу если вы покидаете их нажимая кнопку “назад” (back) до тех пор, пока они не закроются, а не кнопку “домой” (home). Но даже если вы нажимаете “домой”, Андроид все равно в конце концов выгрузит приложение, если оно довольно долго будет находиться в фоне.
Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? ;)
Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.
Что с ней так? Своё негодование вы можете высказать в комментариях. Мы постараемся учесть ваше пожелание в будущем, чтобы улучшить качество материалов сайта. А сейчас проведём воспитательную работу с автором.
Если вам интересны новости мира ИТ так же сильно, как нам, подписывайтесь на Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, удобнее "Вконтакте"?
Поговорить?
Читайте нас где удобно
Для тех, кто долистал
Ай-ти шуточка бонусом.
Сегодня подошли гопники, хотели отжать iPhone X. Сказал, что еще не купил. Сделали предзаказ.
Уже наговорили: