Я разрабатываю приложение Android Launcher (замена домашнего экрана) и сталкиваюсь с тем, что пусковая установка убивается в ситуациях с нехваткой памяти. Это явно не очень хорошо, когда пользователь возвращается домой и должен ждать.
В своем исследовании я обнаружил, что Android классифицирует процессы по нескольким приоритетным группам, от высшего к низшему:
Система
Настойчивый
Передний план
Видимый
Ощутимый
Услуги
Дом
Предыдущий
Б Услуги
Фон
Вы можете проверить, какие процессы подпадают под какие, выполнив: adb shell dumpsys meminfo
Самая полная документация, которую я смог найти по этой теме, была: http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle
Однако он не дает четкого представления обо всех упомянутых выше группах. Конкретно,
Как/когда процесс считается «воспринимаемым»? Некоторые приложения (например, Go Launcher EX), похоже, придумали, как оставаться в этой категории, когда не на переднем плане. Таким образом, его убивают не так часто. Как они это делают?
Из активности dumpsys оболочки adb я обнаружил, что Go Launcher Ex считается службой переднего плана. Единственная документация, которую я могу найти на эту тему, говорит, что вам нужно поместить постоянное уведомление в строку состояния. Однако Go Launcher Ex каким-то образом обошел это требование. Я потерялся, как :- (
В чем разница между «A Services», «Home» и «B Services»?
Любые другие общие советы для приложения запуска о том, как оно может получить более высокий приоритет, чем обычное приложение? Я думаю, что это совершенно законный запрос, учитывая, что программа запуска должна считаться более приоритетной, чем большинство вещей (кроме текущей активности на переднем плане) для пользователей.