onSaveInstanceState () и onPause () последовательность вызовов - PullRequest
5 голосов
/ 09 января 2012

В документации о onSaveInstanceState() говорится:

Если метод вызывается, он всегда вызывается перед onStop () и, возможно, перед onPause ().

Но я постоянно замечаю из сообщений журнала, что onPause() ВСЕГДА ВЫЗЫВАЕТСЯ ДО onSaveInstanceState().Я поместил сообщения журнала в эти два метода.Пожалуйста, помогите мне понять, при каких обстоятельствах onSaveInstanceState() вызывается раньше onPause().

Среда: Android v4.0 (API 14) + Eclipse v3.7.1 - Indigo.

Ответы [ 3 ]

7 голосов
/ 09 января 2012

Вы можете прочитать об этом здесь .

В двух словах, вы никогда не узнаете, когда будет запущен onSaveInstanceState.

3 голосов
/ 16 февраля 2015

Пожалуйста, помогите мне понять, при каких обстоятельствах onSaveInstanceState () вызывается перед onPause ()

Существует разница в жизненном цикле Activity между pre-HONEYCOMB и другими платформами (начиная с HONEYCOMB):

Уровень API> = 11 : когда вызывается onPause(), процесс находится в безопасном состоянии, его невозможно убить.

Уровень API <11 </strong>: когда вызывается onPause(), процесс, в котором размещается действие, становится уничтожаемым.Это означает, что система может уничтожить процесс, содержащий действие, без выполнения какой-либо другой строки кода.Поэтому, если это произойдет, onSaveInstanceState() никогда не будет вызван.Чтобы избежать этого, система должна вызвать onSaveInstanceState() до onPause(), иначе вы не сможете сохранить пользовательское состояние.

0 голосов
/ 09 января 2012

onSaveInstanceState () - это хорошо, но onPause () вызывается только гарантированный обратный вызов, когда ваша деятельность теряет фокус. Итак, сохраните там свое состояние

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...