Разница в жизненном цикле активности в кнопке «Назад» на устройстве и на кнопке «Назад» на панели действий - PullRequest
0 голосов
/ 21 декабря 2018

В настоящее время я изучаю Activity Lifecyle.Я заметил следующее:

  • У меня есть две операции, A и B.
  • Когда я открываю операцию B из операции A, A останавливается, а B создается и запускается.
  • Когда я нажимаю кнопку «Назад» на моем устройстве, B разрушается, а A перезапускается.
  • Но когда я вместо этого использую кнопку Back / Up на панели действий, B уничтожается, A уничтожается, а затем вызывается onCreate ().

Почему вместо A уничтожаетсяперезапущен, когда вы используете Up Botton в ActionBar?

Надеюсь, мой вопрос понятен, если нет, пожалуйста, прокомментируйте.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Когда вы нажимаете кнопку НАЗАД, это вызывает onBackPressed() в текущем Activity.Поведение этого метода по умолчанию (если оно не переопределено в Activity) - это вызов finish() в Activity.Это завершает Activity и возобновляет Activity, который находится под ним.

Кнопка UP вызывает startActivity() с Intent, который построен следующим образом:

Intent intent = new Intent(this, TargetActivityForUpButton.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Этот код удалит все действия в стеке, включая TargetActivityForUpButton.Затем он создает новый экземпляр TargetActivityForUpButton и запускает этот Actvity (вы увидите, что onCreate(), onStart(), onResume() вызывается на Activity.

См. Также раздел «Навигация».до родительской деятельности "в https://developer.android.com/training/implementing-navigation/ancestral

0 голосов
/ 21 декабря 2018

Кнопка возврата устройства фактически возвращает вас назад (к предыдущему действию).Кнопка «Назад» панели действий работает аналогично кнопке «Вверх» (в иерархии вашего приложения).Вот почему кнопка «Назад» на панели действий не выведет вас за пределы приложения, в то время как кнопка «Назад» на устройстве продолжит вас, даже за пределами приложения.Панель действий существует в вашем приложении, поэтому она следует методам жизненного цикла действия и запускается с нуля каждый раз, когда вы возвращаетесь, тогда как устройство перезапускается с того места, на котором оно остановилось.

РЕДАКТИРОВАТЬ:

Кнопка «Назад» появляется на панели навигации системы и используется для навигации в обратном хронологическом порядке по истории экранов, с которыми пользователь недавно работал.Как правило, он основан на временных отношениях между экранами, а не на иерархии приложения.

( Подробнее здесь )

...