Hibernate для Андроида

Hibernate для Андроида


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

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

Останавливать разрешено только приложения с низким и средним приоритетом (ниже "интерактивного"). Приложения и службы с приоритетами "важный" и "видимый", скорее всего, являются необходимыми для системы и их не рекомендуется отключать данной утилитой (если очень нужно остановить приложение с высоким приоритетом, это следует пробовать делать из стандартного системного списка выполняющихся процессов.) По умолчанию утилита показывает в своем списке только приложения с низким приоритетом, но с помощью команды "Filter" можно включить отображение остальных.

Некоторые новости по версии 1.5

Релизована работа в режиме службы с запуском при старте Андроид и автоматической гибернацией списка процессов в фоне. Будьте осторожны: режим службы может разрядить батарею, если в списке гибернации указаны процессы, которые постоянно воссоздаются сами собой.

Добавлен диалог настройки службы. Основные параметры: время в секундах между проверками выполняющихся процессов и гибернацией указанных из них при необходимости; количество раз воссоздания "назойливого" процесса, после которых служба перестанет предпринимать попытки отправить такой процесс в гибернацию.

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

Список гибернации можно редактировать - удалять те или иные процессы из гибернации.

Если процесс из списка гибернации вызывается пользователем на передний план, он исключается из списка гибернации.

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

Есть множество прочих изменений (включая русский интерфейс).

Основные изменения в более поздних версиях

1.11, 1.12
Добавлена новая функция автоматической повторной гибернации процессов, которые делались активными пользователем: такие процессы будут отправляться в сон при блокировании устройства, а также если процесс не использовался более одной минуты. Этот режим по умолчанию выключен, для его включения добавлена новая опция.

1.13
Добавлены новые функции: программы можно добавлять в список гибернации из общего списка установленных программ - для этого добавлена новая страница в диалог статуса: в диалоге статуса можно фильтровать программы по названию.

1.14, 1.15
Исправлена проблема несовместимости с Андроид 2.2.

1.16, 1.17
Исправления ошибок и оптимизация.

1.18
Сделана поправка для обхода системной ошибки Андроид, когда менеджер пакетов падает при построении слишком длинного списка установленных приложений.

1.19, 1.20
Незначительные исправления, улучшения и изменения текста в окне настроек для лучшей видимости на малых экранах.

1.21
Добавлен обработчик системной ошибки Android "Package manager has died", которая может возникать на устройствах с очень длинным списком установленных приложений. Это проблема Android! В таких случаях Hibernate выведет сообщение об ошибке вместо списков приложений. Вы можете разрешить проблему, удалив некоторые ненужные приложения. Затем следует остановить и вновь запустить Hibernate.

1.22
  • Предпринята попытка обойти ограничение новых версий Андроид 5+ на получение информации об интерактивных процессах. Hibernate теперь предоставляет собственную службу для системного раздела "Спец. возможностей ", которая должна быть включена для нормального функционирования гибернации.
  • Добавлена возможность открыть системный диалог с информацией для любого приложения из списка путем нажатия на его значок.

Подробности - в разделе FAQ (пока только на английском).

1.23
Добавлена возможность выбирать таймаут в минутах (1-10) перед автоматической регибернацией активированных ранее задач из списка.

...

1.29
Добавлен еще один "костыль" для обхода новых ограничений наложенных Google в API Android 5.1.1. Подробности (на английском) - на отдельной странице.

6 comments:

  1. Какие лучше Greenify, Hibernate или Менджер Hibernate?

    ReplyDelete
    Replies
    1. Это субъективный вопрос - каждый пользователь должен решить для себя, что ему больше подходит, тем более что принципы работы указанных приложений - разные. Основное отличие Hibernate от двух других - изначальная разработка для нерутованных устройств, в то время как конкуренты или требуют рута, или сильно ограничены в функционале без рута.

      Delete
  2. Я новичок в Андроиде, но понял - данная система в большой степени живёт сама по себе: запускает приложения в фоновом режиме какие хочет, что ест оперативную память и батарею.
    Созданная Вами утилита, Уважаемый Господин Станислав,призвана бороться с ненужными фоновыми процессами и усыплять их. Я правильно понимаю ситуацию???
    Но, для нас Чайников сразу сложно правильно настроить программу, не хватает знаний и опыта.......что,впрочем, дело наживное.
    Так вот пока наживем нельзя ли элементарный Мануальчик для нас, пока малознающих, сотворить???
    Или в настройках утилиты предусмотреть опцию "по умолчанию"???
    Ведь главное в нашем деле - "не навреди"!!!!
    Спасибо.

    ReplyDelete
    Replies
    1. Да, Вы правы - Гугл считает, что он и разработчики программ для Андроид - в большей степени хозяева на устройстве, чем обладатель устройства. Встроенных средств управления приложениями нет.

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

      Начиная с версии Андроид 7, утилита бесполезна, т.к. Гугл совсем закрутил гайки, убивает доступные возможности контроля за приложениями одну за другой. Прикрывается заботой о безопасности, но по факту создает ситуацию, когда пользователь не может выяснить, что происходит на его устройстве, не имея прав root.

      Delete
  3. Здравствуйте, большое спасибо за оперативный, понятный ответ на мои вопросы. Ну, Гугл, он и в Африке Гугл, кто платит тот и крутит гайки......)))). Вот Вы пишет - "пользователь не может выяснить, что происходит на его устройстве, не имея root." Что такое root я уже знаю, и он есть на моём Keener K9s,Android 4.2.2 А вот выяснить что происходит на моём устройстве это как сделать???
    Продолжаете ли Вы,уважаемый Господин Станислав, работу над утилитой Hibernate? и будут ли следующие версии??
    Спасибо.

    ReplyDelete
    Replies
    1. Для рутованных устройств есть более продвинутые утилиты для контроля за выполняющимися программами - посмотрите в Google Play. Hibernate вряд ли будет сильно развиваться, поскольку идея его создания в том, чтобы по возможности предоставить управление процессами без рута, но поскольку гугл обрубил уже все возможности, то смысла работать в этом направлении нет.

      Delete