Как работает Activity.finish () в Android?

Может ли кто-нибудь описать, что происходит, когда Activity вызывает метод finish() ?

Выходит ли он немедленно или выполняет функцию, из которой он был вызван?

Выходит ли он немедленно или завершает функцию, из которой он был вызван?

Метод, который называется finish() будет завершен. Операция finish() не начнется, пока вы не вернете управление Android.

Каждое событие жизненного цикла, например onCreate , onResume , onPause …. onDestroy of Activity всегда вызывается в одном streamе – «Основной stream».

Короче говоря, этот stream поддерживается Queue, в который все события активности публикуются. Этот stream может выполнять все эти события в порядке вставки.

Если вы вызываете finish() в одном из обратных вызовов цикла жизни, таких как onCreate() … сообщение «finish» будет добавлено в эту очередь, но stream не будет свободно выбирать и выполнять действие «закончить» до тех пор, пока не будет выполняться метод возвращается, т.е. Thread освобождается от текущей задачи.

ondestroy() – это последний звонок, который вы получаете до того, как ваша деятельность будет уничтожена.

Это может произойти либо потому, что активность заканчивается (кто-то называется finish() на нем, либо потому, что система временно уничтожает этот экземпляр активности для экономии места. Вы можете различать эти два сценария с isFinishing() .

Если есть два действия A и B. И ваш stream идет от A> B; и B = A finish() .

Затем,

Метод, по которому вы вызвали finish() из, будет выполняться, как указано в Mark. И stream обратных вызовов будет следующим:

  1. onPause() activity A
  2. onRestart() > onStart() > onResume() деятельности B
  3. Затем возникает реальная разница. Если вы не вызвали finish() из activity A ; здесь будет называться только onStop() Activity A Хотя в этом случае, когда мы вызывали finish() из Activity A ; Поэтому onStop() и onDestroy() оба будут вызваны для activity A
  • Ошибка «Основной метод не найден» при запуске программы?
  • Сортировка коллекций (список , метод сравнения )
  • Как вызвать метод после задержки в Android
  • Как установить тайм-аут в библиотеке дооснащения?
  • NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
  • Не удается получить местоположение и электронную почту с помощью API Facebook
  • Пользовательский ListView для Android не может нажимать на элементы
  • Печать целого числа в двоичном формате в Java
  • Почему я получаю сообщение «Failed to bounce to type», когда я включаю JSON из Firebase в объекты Java?
  • Преобразование объекта в JSON на Android
  • AES получает разные результаты в iOS (Obj-C) и Android (Java)
  • Interesting Posts

    В чем разница между «Запросить полезную нагрузку» и «Данные формы», как показано на вкладке «Инструменты разработчика Chrome».

    iPhone получает SSID без частной библиотеки

    Почему я не могу определить конструктор по умолчанию для структуры в .NET?

    Как разместить динамический компонент в контейнере

    Войти через SSH без пароля

    Как отлаживать привязки событий JavaScript / jQuery к Firebug или аналогичным инструментам?

    Chrome GUI слишком велик по состоянию на 43.0.2357.124-1

    Отображение изображений из определенной папки на SD-карте с использованием gridview

    Гиперссылка на другой рабочий лист с использованием функции гиперссылки в excel

    Для каждого цикла с элементами управления и представления формы (Html.BeginForm) в MVC 4

    Spring MVC: сложный объект как GET @RequestParam

    Какие типы чисел представляются в двоичной с плавающей запятой?

    Сортировка std :: map с использованием значения

    Обнаружение пикового сигнала в реальном времени

    Исключение из строкового индекса java

    Давайте будем гением компьютера.