Всегда ли финиш запланирован перед startActivity? - PullRequest
0 голосов
/ 12 июня 2018
startActivity(newActivity);
finish();

Предположим, я звоню так, как указано выше.Оба вызова запланированы на поток пользовательского интерфейса после завершения вызывающего метода.Однако есть ли определенный порядок в расписании?Всегда ли финиш запланирован перед startActivity?или наоборот?

Ответы [ 4 ]

0 голосов
/ 18 июля 2019

Должно работать в обоих случаях.

0 голосов
/ 13 июня 2018

Таким образом, в основном порядок планирования зависит от порядка вызовов.Если вы сначала вызовите finish (), он будет добавлен в очередь, а затем startActivity ().То же самое относится и к другому.В зависимости от того, как идет ваша реализация, если вам требуется определенный порядок в планировании, просто вызовите функции в том порядке, в котором вы хотите, чтобы произошло планирование.

0 голосов
/ 14 июня 2018

При вызове finish () для действия выполняется метод onDestroy (), который может выполнять такие действия, как:

  1. Отключать любые диалоговые окна (диалоги поиска), которыми управляла деятельность.
  2. Закройте все курсоры, которыми управляла деятельность.И действие удаляется из стека.

И вызов startActivity (newActivity) создает и помещает новый вид сверху.

Таким образом, если порядок равен

startActivity (newActivity);

finish ();

Затем отображается первая новая активность, а старая разрушается.

Но, если порядок равен

finish ();

startActivity (newActivity);

Затем сначала существующее действие уничтожается, а новое создается и отображается.

Итак, если у нас много вещейсделать в onDestroy () (например, сохранить некоторые данные), тогда будет полезно вызвать startActivity (), а затем finish (). Таким образом, порядок зависит от того, что мы вызываем первым.

0 голосов
/ 12 июня 2018

Это будет работать в обоих случаях независимо от того, пишете ли вы в Finish () до или после начала действия ()

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