Обзоры и статьи / Почему не стоит использовать Таск Киллеры на Андроиде

Таск Киллеры на Андроиде: Пользуетесь ли Вы Таск Киллером на Андроиде?

 
 

Всего проголосовало: 491

 

Почему не стоит использовать Таск Киллеры на Андроиде

Доброго времени суток, друзья! Сегодня мы обратимся к крайне спорной и интересной теме — использовании таск киллеров на наших андрофонах. Вашему вниманию представляется перевод весьма популярной в интернете статьи, написанной мистером flipz для сайта geekfor.me.

Этот вопрос поднимается снова и снова. Люди говорят, что программы выполняются в фоновом режиме и считают, что они тратят их батарейку или сжирают всю память. И их естественная реакция — установить программу, которая может убивать таски. Но есть один момент... скорее всего вы нанесете больше вреда, чем принесете пользы, убивая таски, которые не готовы завершиться. У меня была та же проблема когда я только купил свой CDMA Hero. На нем крутилась целая куча разных программ, а я не хотел этого и постоянно их убивал. Через несколько недель я осознал, что если я перестану пользоваться таск киллером и полностью его удалю, то мой телефон на самом деле начнет работать лучше! Приложения стали закрываться сами и появилось впечатление, что все стало работать лучше. Я понимаю, что, возможно, есть краткосрочные выгоды от удаления таска, но все равно найдите время прочесть эту статью.
Вот немного информации прямо со страницы для разаботчиков под Android. Важные части я отметил жирным шрифтом. Здесь довольно много написано, но я правда считаю, что это важно.

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

Поставщик содержимого (СontentProvider) активен только во время ответа на запрос от ContentResolver.
Подписчики широковещательных сообщений (Broadcast receivers) активны только во время ответа на широковещательное сообщение. Таким образом, нет никакой необходимости принудительно завершать эти компоненты.Активности (Activities), с другой стороны, представляют собой пользовательский интерфейс. Они являются долгосрочными сеансами общения с пользователем и могут сохранять активность даже в ждущем режиме пока взаимодействие продолжается. Также и сервисы могут продолжать работать длительное время. Поэтому в системе Android есть встроенные методы завершения активностей и сервисов:

- Активность (Activity) можно завершить, вызвав ее метод finish(). Одна активность (Activity) может завершить другую (порожденную первой с помощью метода startActivityForResult()), вызвав метод finishActivity() последней.
- Сервис можно остановить, вызвав его метод stopSelf() или вызвав Context.stopService().

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

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

Жизненный цикл активности (Activity)


Активность (Activity) может по сути находиться в трех состояниях:

- Активном или выполняемом — когда находится на экране на первом плане (наверху стека активностей текущего приложения). Именно в этой активности пользователь выполняет свои действия.
- В приостановленном состоянии (paused), если с нее ушел фокус, но она до сих пор видна пользователю. Это происходит в том случае, когда сверху находится другая активность, которая либо прозрачна, либо занимает не весь экран, так что приостановленная активность из-под нее частично видна. Приостановленная активность — полностью действующая (содержит всю информацию о своем состоянии и содержащихся элементах и связана с менеджером окон (window manager), но может быть убита системой в ситуации жесткой нехватки памяти.
- В остановленном состоянии (stopped), если она полностью закрыта другой активностью. В ней все еще хранится информация о состоянии и содержащихся элементах. Но она больше не видна пользователю и чаще всего будет уничтожена системой, когда память будет нужна еще где-то.

Если активность приостановлена или остановлена, система может выгрузить ее из памяти либо попросив ее завершиться (вызвав ее метод finish()), либо просто убив сам процесс. Когда надо будет ее снова показывать пользователю, ее придется перезапустить и полностью восстановить предыдущее состояние.
Активности отдается приоритет
в промежуток времени между вызовом метода onResume() и соответствующим вызовом метода onPause(). В это время активность находится выше всех других на дисплее и именно с ней взаимодействует пользователь. Активность может часто переходить между возобновленным и приостановленным состояниями — например, метод onPause() вызывается когда девайс переходит в ждущий режим или когда стартует новая активность, метод onResume() вызывается когда приходит результат активности или новый Intent. По этой причине в эти два метода не стоит помещать действия, которые могут занять много времени.

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

Почему не стоит использовать Таск Киллеры на Андроиде


Итак... версия для тех, кто не любит много читать:


- В систему Андроид встроено автоматическое удаление задач при нехватке памяти.
- В систему Андроид встроено автоматическое удаление задач, закончивших свое выполнение.
- В систему Андроид встроено автоматическое удаление задач, к которым долгое время не обращались.
- Большинство сервисов (возможно выполняющихся в фоне) используют крайне мало памяти в том случае, если они не выполняют какую-то трудоемкую задачу.
- Поставщик содержимого (СontentProvider) интенсивно работает только когда получает сообщение о необходимости предоставления своего содержимого. Во все остальное время он использует очень мало памяти.
- Унитожение процесса, не готового к этому, приводит только к тому, что он должен снова подгрузиться и начать все с самого начала, когда вновь понадобится.
- Из-за того, что задача скорее всего выполняется в фоне не без причины, ее уничтожение приветдет лишь к ее перезапуску, когда активность, использующая ее вновь к ней обратится. И ей не останется ничего кроме как начать все с начала.
- Уничтожение определенных процессов может иметь нежелательные побочные эффекты. Неполученные смски, непрозвонившие будильники и вылетающие программы — только небольшая их часть.
- Единственный верный способ запретить чему-то выполняться на вашем телефоне — деинсталлировать .apk.
- Большинство приложений сами завершают работу если вы покидаете их нажимая кнопку “назад” (back) до тех пор, пока они не закроются, а не кнопку “домой” (home). Но даже если вы нажимаете “домой”, Андроид все равно в конце концов выгрузит приложение, если оно довольно долго будет находиться в фоне.

Дополнение:

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

Но линукс не страдает таким поведением. Признаюсь, я не знаю точного механизма и причины этого... но линукс работает одинаково в независимости от того, если ли у него 20 или 200 мегабайт незанятой памяти. И, как я упомянул выше, Андроид начнет автоматически выгружать приложения когда количество памяти понизится. Процитирую Криса Джонстона “Чистить буферы и кеши в ОЗУ довольно-таки глупо. Представьте себе учителя, который вместо того, чтоб писать на всю длину классной доски, как только заканчивает предложение тут же его стирает и СНОВА и СНОВА пишет начиная с верхнего левого края доски. Или, представьте, вам понравилась песня. Вы записываете ее в начало кассеты. Когда вам хочется записать еще одну, вы пишете поверх первой или все-таки после нее?”

Я также встречал много людей, которые ошибочно предполагают, что чем больше памяти используется, тем быстрее садится батарейка. На самом деле, это гораздо больше зависит от количества проделанных процессорных циклов, а не от количества памяти, занятого какой-то программой. Однако, все это наталкивает на мысль! Когда таск менеджер может быть полезным? Когда нужно определить, ЧТО заставляет ваш телефон тормозить, что заставляет батарейку быстрее садиться. Именно такой способ помог нам выяснить, что, оказывается, существует бага, оставшаяся еще с версии 1.5, которая тормозит наши CDMA Hero и по сей день. И в то время как программа, занимающая память не приносит никакого вреда, программа, нагружающая процессор, абсолютно точно это делает. И все равно я не рекомендую использовать таск киллеры для уничтожения программы, которая загружает ваш процессор (если это только не разбушевавшийся процесс-зомби, но в этом случае вообще лучше перезагрузиться). Но они могут помочь вам разобраться, что же происходит с вашим телефоном.

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

Системные требования: Нет данных
Как бесплатно качать с файлообменников

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
  1. Цитата: ShuriC13
    особенно, если продавать эти тасккиллеры.

    на вскидку назову 2 бесплатных,в линуксах много альтруистов,втом числе создатель Линус Торвальдс

    Цитата: ApeZ
    Или рутовать телефон и снимать статусы автозапуска с мусорных системных процессов.
    во во,а лудше ещо и поудалять весь скам через титаниум.

    Цитата: andruhes
    Titanium backup замечательно замораживает и останавливает работу программ
    +1,ещо и удаляет всякие гуглоплеи и гмейлы с фейсбуками(блин,9 приложений в ОФФ прошивке было для книгалица,типа фб контакты,фб дни рождения,музыка фб,а я фб ваще непользую,имхо УГ)



    PS ДАЕШ ЧИСТЫЕ ПРОШИВКИ+КАСТОМНЫЕ ЯДРА+РАЗЛОЧЕННЫЙ БУТЛОДЕР!! УРА ТОВАРИЩИ!
  1. Titanium backup замечательно замораживает и останавливает работу программ
  1. Fsd, Fsd,

    Поддерживаю. thumbup
  1. Цитата: konst081971
    Жизнь давно уже доказала обратное, написанному в статье.

    И не только жизнь! Тот, кто занимается программированием, знает, что все эти гугловские примочки с автозакрыванием приложений - сплошное разводилово. Теперь уже и блокноты делают со статусом системного процесса. Ты его убиваешь, а Андроид его опять поднимает через несколько секунд. Без тасккиллеров никак!!! Или рутовать телефон и снимать статусы автозапуска с мусорных системных процессов.
  1. много раз тестировал это дело. С таск киллером планшет быстрей работает, от открытия меню настроек и навигации до работы в браузере и игрушек. Батарея за ночь тратится на 1%. Без таск киллера после долгой работы устройства менюшки открываются медленно, ресурсоемкие игры тормозят, за ночь батарея тратится на 40%. Я не хочу сказать что в гугл идиоты, но результат на лицо. И думаю что не я один это заметил.
  1. Цитата: cheburatorxl
    Думаю ребята далеко не балбесы

    разумеется wink
    особенно, если продавать эти тасккиллеры.
    Включите логику...
  1. Жизнь давно уже доказала обратное, написанному в статье.
  1. Использовал и буду использовать меморибустер.
  1. Выходит люди попусту тратили своё время , разрабатывая для андроид таск Киллеры ? Где логика ? .... Думаю ребята далеко не балбесы, что бы создавать такие удобные програмки.
  1. Цитата: 5393
    Какие именно, например?

    Скайп, QIP SpeedTest, SMS box т.д. и т.п.
    И не надо советовать мне пользоваться браузером!
    А да еще многие браузеры после "выхода" весят в невесомости!
  1. Обьяснение не без умных мыслей, но по сути дилетанта.
    Нет упоминаний о кэше и его вариантах и значениях.
    Нет ничего, о том как можно ограничить срабатывания приложений от тригеров (событий)
    В целом статья для того, что бы задуматься над root-ом :)
  1. У меня samsung i9003. Проверено не раз, если не убить процессы то батарея за ночь теряет до 30% своего заряда. А если перед ночью убить лишнии процессы, то батарея теряет не более 3% заряда. Всегда приложения закрываю через кнопку назад. И при этом все равно какая то тварь жрет батарею и не дает нормально уснуть девайсу. Телефоном пользуюсь три года. Килер стоит с самого начала. Не раз пытался от него отказаться, но в итоге из за жора батареи возвращался обратно.
  1. Цитата: Suharik-Sergey
    Затем что без установки приложения не воспользоваться.

    Какие именно, например?
  1. Второй год этот бред по сети ходит и так никто ни доказать ни опровергнуть не может. А разработчики ведра может и видели это в своих снах то что выдают за действительнось только действительность имеет свое личное мнение на этот счет. А теоретики всегда как были теоретиками так ими и останутся. Не они в конце концов в космос летают.
  1. При всем уважении к логике изложения отмечу два момента:
    1. Даже не имея глубоких (системных) знаний по Андроиду, любой наблюдательный человек заметит, что в процессе эксплуатации количество свободной памяти в устройстве постепенно, но неуклонно уменьшается. Т.е. тезис автора материала о встроенных возможностях освобождения памяти не подтверждается практикой или он касается "голой" ОС. Многие приложения после первого запуска (и останова) остаются висеть в памяти.
    2. Даже те, у кого девайсы имеют на борту 2 и более ГБ оперативы сталкивались с ситуацией нехватки памяти, например при запуске игр с высокодетализированной графикой. Без использования тасккиллера ну никак не обойтись в таком случае. Т.е. ОС не может самостоятельно освободить требуемую для ресурсоемкого приложения память.
  1. Цитата: slkdnvlad

    В частности проверил на программах mx video player и es explorer.

    Так в es explorer выход - двойное нажатие кнопки "Назад".

    Цитата: slkdnvlad
    Странно другое что после нажатия кнопки "выход" приложение все равно висит в памяти, хотя должно было завершиться и закрыться.

    Может оно завершается и закрывается долго.
  1. Странно другое что после нажатия кнопки "выход" приложение все равно висит в памяти, хотя должно было завершиться и закрыться.
    В частности проверил на программах mx video player и es explorer.
    На андроид 4.2.2 аппарат леново а 369и
  1. Цитата: 5393
    а зачем тогда устанавливать то, чем редко пользуешься?

    Затем что без установки приложения не воспользоваться. Что же мне каждый раз устанавливать использовать и удалять?))) Есть приложения которые я использую раз в неделю и не хочется что бы они весели в "невесомости"))
  1. Цитата: Suharik-Sergey
    Я закрываю все чем пользуюсь редко

    Сразу же возникает вопрос: а зачем тогда устанавливать то, чем редко пользуешься? В те же ОК или ВК ( а также иные приложения не имеющие явной "кнопки" ~Выход~ ) можно входить и через браузер... ИМХО ;)
  1. Интересно, а как живут свернутые приложения ВК и т.п. они вроде как не активны, но если тебе приходит сообщение тут же активируются?))) они постоянно пользуются сетью (это сказывается на заряде батарейки), а кнопки выхода у них нет! Есть еще множество программ которые в спящем режиме все равно поддерживают различные сети и услуги...
    Я закрываю все чем пользуюсь редко или не хочу что бы весело в онлайне! ИМХО