Насколько я могу видеть onRetainNonConfigurationInstance - это избыточный обратный вызов. Если у моей активности действительно дорогостоящая инициализация, мне лучше использовать onSaveInstanceState. Сохраненный экземпляр охватывает больше ситуаций, чем экземпляр без конфигурации. Есть ли какие-либо рекомендации по использованию одного API по сравнению с другим? Спасибо.
Какой из них использовать: onSaveInstanceState vs. onRetainNonConfigurationInstance?
Ответ 1
Насколько я могу видеть onRetainNonConfigurationInstance является избыточным обратным вызовом.
Нет, это не так.
Если у моей активности действительно дорогостоящая инициализация, мне лучше использовать onSaveInstanceState.
onSaveInstanceState()
не предназначен для "действительно дорогостоящей инициализации". Он предназначен для "эй, пользователь внес некоторые изменения в информацию в своей деятельности, но еще не сохранил его, не потерял эти данные, m'kay?".
Есть ли какой-либо ориентир для использования одного API по сравнению с другим?
Если он находится в Bundle
и не слишком большой, используйте onSaveInstanceState()
. Все, что не соответствует Bundle
(например, сокет) или действительно велико (например, фотография как Bitmap
), должно использовать onRetainNonConfigurationInstance()
, и ваше приложение должно быть в состоянии повторно создать эти элементы при необходимости.