Подробный жизненный цикл активности Android (onAttachedToWindow ()) - PullRequest
8 голосов
/ 14 июня 2010

Меня интересует жизненный цикл активности Android, и я хотел бы получить более подробное описание / документацию / ссылку, чем широко доступный базовый (onCreate-> onStart-> onResume) one .

Мне нужно понять, что запуск нового действия (Theme.Dialog в стиле) с onAttachedToWindow() значительно сокращает время отклика по сравнению с запуском из onCreate (). Интересно, как это onAttachedToWindow() вписывается в весь жизненный цикл активности Android. Официальное описание API-интерфейса "Вызывается, когда окно прикреплено к оконному менеджеру" не очень помогает.

Ответы [ 2 ]

4 голосов
/ 14 июня 2010

Я думаю, почему это кажется более отзывчивым: мне кажется, что если вы запустите упражнение B из onCreate () упражнения A, упражнение A не будет выполнено до начала действия B, что может занять еще секунду или два (что делает приложение менее отзывчивым), где, если вы запускаете действие B в onAttachedToWindow () действия A, A запускается и обрабатывается до того, как B запускается, поэтому пользователю не нужно сидеть в течение секунды с пустым экран или предварительное действие перед тем, как увидеть реакцию на их действие.

0 голосов
/ 16 февраля 2018
  1. При запуске действия вызывается метод onCreate().В методе onCreate() вы выполняете базовую логику запуска, которая должна происходить только один раз за весь период действия.

  2. После выполнения onCreate() вызывается метод onStart().Этот метод делает действие видимым , так как приложение готовит действие, чтобы выйти на передний план и стать интерактивным.

  3. После выполнения onStart() вызывается метод onResume().Этот метод вызывается только в том случае, если приложение находится на переднем плане 1020 *, поскольку это состояние, в котором приложение взаимодействует с пользователем.Приложение остается в возобновленном (или запущенном) состоянии, пока что-то не отвлекает внимание от приложения.

  4. Если на передний план входит другое действие, вызывается метод onPause().Приложение приостанавливается, если оно все еще видно .Этот метод только приостанавливает операции действия.Это не разрушает.Действие остается в состоянии паузы до тех пор, пока оно не возобновится или не станет полностью невидимым для пользователя. 4a * * один тысяча тридцать один.Если пользователь возвращается к действию, метод onResume() вызывается снова. 4b .процесс приложения может быть остановлен из состояния паузы, если приложения с более высоким приоритетом нуждаются в памяти.Если пользователю нужно вернуться в приложение после его закрытия, метод onCreate() вызывается снова

  5. Если действие больше не видимое для пользователя,метод onStop() вызывается.Когда действие останавливается, объект действия сохраняется в памяти и сохраняет все состояние и информацию, но не присоединяется к диспетчеру окон..если пользователь возвращается к действию, вызывается метод onRestart(), а затем снова метод onStart()..процесс приложения может быть остановлен из остановленного состояния, если приложения с более высоким приоритетом нуждаются в памяти.Если пользователю необходимо вернуться в приложение после его закрытия, метод onCreate() вызывается снова.

  6. Если действие завершается или уничтожается системой, onDestroy() метод вызывается.Приложение изначально не закрыто.Система вызывает этот метод либо из-за того, что действие завершается из-за чьего-либо вызова finish(), либо из-за того, что система временно уничтожает процесс, содержащий действие, для экономии места.Система может также вызвать этот метод, когда происходит изменение ориентации, а затем немедленно вызвать onCreate(), чтобы воссоздать процесс (и компоненты, которые он содержит) в новой ориентации.Метод onDestroy() освобождает все ресурсы, которые еще не были освобождены более ранними методами, такими как onStop().

. полное время жизни действия происходит междупервый вызов onCreate() через один окончательный вызов onDestroy().

видимое время жизни действия происходит между вызовом onStart() до вызова onStop().

Время жизни переднего плана действия происходит между вызовом onResume() до вызова onPause().

Единственный метод, который мы должны реализовать, - это onCreate(),Остальные вызываются автоматически.Но мы можем реализовать их сами, чтобы сообщить приложению, что делать во время этих процессов.

https://developer.android.com/guide/components/activities/activity-lifecycle.html#asem

onAttachedToWindow вызывается, когда представление присоединено к окну.На данный момент он имеет поверхность и начнет рисовать.

https://developer.android.com/reference/android/view/View.html#onAttachedToWindow()

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