Android Simulator: простой способ имитировать перезапуск процесса из-за низкой памяти?
Как я только что узнал, Android оставляет за собой право убить фоновый процесс приложения в любой момент, чтобы перезагрузить ОЗУ. Приложение все еще работает и может быть возобновлено, но все мои статические переменные исчезли (см. эту статью).
Я хотел бы моделировать поведение моего приложения в этом сценарии. Какой самый простой способ сделать это? Конечно, должен быть более простой и предсказуемый способ, чем писать некоторые дополнительные приложения, которые выделяют много памяти.
Ответы
Ответ 1
Нашел два похожих вопроса Имитировать убийство активности в эмуляторе и Имитировать низкий уровень заряда аккумулятора и низкую память в Android.
Решения по этим вопросам:
- Используйте
adb shell
, а затем kill
процесс с PID
из ps
- Убейте его, используя DDMS
Ответ 2
короткий ответ: измените ориентацию, если вы используете эмулятор. если вы используете фактическое устройство, измените настройки, перейдя в настройки → параметры разработчика → не сохраняйте действия.
см. мой ответ на этот и этот для подробного объяснения.
Ответ 3
Альтернативный способ - создать супер базовое приложение, которое вызывает killBackgroundProcesses() для вашего пакета, потому что этот метод "такой же, как ядро, убивающее эти процессы для восстановления памяти, система позаботится о необходимости перезапуска этих процессов в будущем по мере необходимости".
Ответ 4
Чтобы убить фоновые процессы (но все же повторно запускать через историю), вы можете просто использовать команду оболочки диспетчера действий на симуляторе или устройстве:
$ adb shell am kill com.my.package