Позволяет уточнить ваш вопрос.
Но прежде чем мы это сделаем, рассмотрим факт onSaveInstanceState - его вызывают по разным причинам, таким как:
- изменение ориентации
- переход от переднего плана к фону (щелкнув домой или запустив другое занятие или нажав последние)
- Система находится под недостатком памяти
Теперь, если ваш вопрос «как я могу имитировать вызов onSaveInstance только для целей тестирования», ответ Тео и Теда верен. Изменение параметра настроек разработчика или нажатие home приведет к вызову onSaveInstance.
Но так же, как и просто изменение ориентации (как вы отметили в своем вопросе) - что наводит меня на мысль, что вы можете спросить: «Как я могу симулировать вызов метода onSaveInstance, когда система находится под низким давлением памяти»
Краткий ответ на этот вопрос: нет автоматизированного способа симуляции состояния нехватки памяти. Вышеупомянутые методы только моделируют вызов метода onSaveInstanceState, а не нехватки памяти как таковой
Несколько предостережений здесь.
Первое предостережение об этом заключается в том, что в экстремальных условиях ядро «нечисто» убьет ваш процесс, чтобы потребовать память - это означает, что onSaveInstanceState никогда не будет вызываться. В этих ситуациях тестирование onSaveInstanceState является спорным. С этим сценарием мало что можно поделать, но хорошая новость в том, что это очень редкое событие, особенно. для переднего плана деятельности.
Вторым предупреждением является то, что ActivityManager может вернуть ресурс вашей деятельности, «просто убив его», то есть будет вызван ваш onSaveInstance. Это происходит с действиями, которые не находятся на переднем плане (то есть не видны пользователю, поэтому уже находятся в остановленном состоянии), и система находится под давлением памяти.
В этом втором предостережении вы снова не можете автоматически смоделировать это условие. Это можно сделать, если вы вручную запустите кучу тяжелых операций и надеетесь, что ActivityManager будет вынужден перезапустить одно из ваших действий.
Здесь важно помнить, что нет необходимости имитировать состояние с низким объемом памяти. Пока вы имитируете, как вызывается onSaveInstanceState, вы автоматически тестируете условие, где он может вызываться для ситуаций нехватки памяти. И самый простой способ вызвать этот метод - изменить ориентацию на эмуляторе (ctrl-f11). И если вы используете реальное устройство для временного изменения настроек разработчика («Не сохранять действия»)