Так, например, я только что понял, что восстановление одного действия с помощью этих двух функций довольно бесполезно.
Нет, это очень полезно при правильном использовании.
Потому что, если я нажму кнопку "Назад" и вернусь к предыдущему действию, эта не получит свой пакет "saveInstanceState" и вместо этого будет полностью воссоздана.
Нет, это не так.
Если он уже существует и находится в заднем стеке, он будет запущен (onStart()
) и возобновлен (onResume()
), но он не будет создан. Если Android пришлось закрыть предыдущее действие (например, из-за нехватки памяти), будет создано предыдущее действие (onCreate()
) и ему будет передан Bundle
, содержащий данные, которые он заполнил в onSaveInstanceState()
.
Единственный способ, которым эти утверждения не будут верными, - это если вы манипулируете обработкой кнопки НАЗАД.
Есть ли способ восстановить целое приложение вместо одного действия?
номер
Или это просто странный дизайн, и мне даже не стоит беспокоиться о восстановлении одного занятия?
Вы наверняка должны восстановить одно действие.
onSaveInstanceState()
используется для двух сценариев:
- Если пользователь изменяет конфигурацию (например, поворачивает экран), ваша деятельность будет уничтожена и воссоздана. Вы используете
onSaveInstanceState()
для передачи данных из старого экземпляра действия в новый.
- Сценарий кнопки НАЗАД, который я описал выше.
Я проверял это раньше в другом упражнении, и там, в пакете saveInstanceState "onCreate" и "OnRestoreInstanceState", где то же самое!
Конечно. Они должны быть одинаковыми. Если действие создается полностью с нуля, onCreate()
будет передано null
и onRestoreInstanceState()
не будет вызвано. Но если есть состояние экземпляра, это состояние (Bundle
) будет передано как onCreate()
, так и onRestoreInstanceState()
.
Это просто случайно или что-то особенное из основной деятельности?
Ни. Они должны быть одинаковыми.