Я немного запутался в этих двух методах в Android.
Из документации я понимаю, что onSaveInstanceState()
следует вызывать для хранения только временной информации, а onPause()
следует использовать для хранения любых постоянных данных.
Мне было интересно, почему вызывать onSaveInstance()
вообще, когда onPause()
вызывается каждый раз. Затем я прочитал в учебнике Notepad:
"Обратите внимание, что
saveState()
должно быть вызываемый как вonSaveInstanceState()
иonPause()
, чтобы данные сохраняются. Это потому, что не гарантирует, чтоonSaveInstanceState()
будет называться и потому что, когда это называется, это вызывается передonPause()
."
Нет гарантии, что onSaveInstanceState()
будет вызван, потому что вы можете просто выйти из операции с помощью кнопки "Назад".
Но в соответствии с этим, если вы не сохраните постоянные данные внутри обоих методов, приложение может быть убито, а внутри onSaveInstanceState()
.
Итак, нам нужно сохранить постоянные данные в обоих методах на самом деле, правильно?
Но если это правда, не слишком ли это связано с накладными расходами, и, возможно, должен быть какой-то другой дополнительный флаг, чтобы сказать, называется ли этот метод или что-то еще?
http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html