Я изучаю Android около 6 месяцев, и все это время я описывал методы Lifecycle как некий callback, который «срабатывает» при изменении состояния или конфигурации ОС.
Вопросы:
1) Например, пользователь поворачивает экран. Как я думаю, Android вызывает какой-то интерфейс, а Activity запускает его код, когда приходит обратный вызов. Я не уверен в этом, потому что у меня есть документация по броскам (Activity/Window/... классы), и я не нашел этот интерфейс или что-то в этом роде. Что на самом деле происходит, когда пользователь поворачивает экран?
2) Например, пользователь нажимает кнопку в своем мобильном приложении и создает новую активность. Будут вызываться методы жизненного цикла, но состояние или конфигурация ОС не изменятся. Это означает, что мое определение методов жизненного цикла неверно. Как это правильно описать? Помогите мне понять, что не так с моим первым определением.
Я знаю об этой ссылке:
https://developer.android.com/guide/components/activities/activity-lifecycle
И есть строчка:
The Activity class provides a number of callbacks that allow the activity to know that a state has changed...
Но внутри класса Activity я вижу, например:
@MainThread
@CallSuper
protected void onCreate(@Nullable Bundle savedInstanceState) {
и я не вижу слова override, так как же Activity может его реализовать?
Есть аннотация @CallSuper, но родительские классы (включая Context) не имеют кода, связанного с жизненным циклом. Так это настоящие обратные вызовы?
Не уверен, что понимаю ваш вопрос, потому что он расплывчатый, но позвольте мне попытаться рассмотреть два конкретных примера:
1) For example, User rotate the screen. As i think, Android invoce some interface and Activity runing it's code when callback come. I'm not sure about it, because i got throw documentation(Activity/Window/...classes) and i did't find this interface or smth like it. What's really happen when user rotate the screen?
В обычном случае, когда пользователь поворачивает экран, происходит «изменение конфигурации». Android отвечает на это, убивая текущий активный Activity. Android вызывает «методы жизненного цикла»: onPause(), onStop() и onDestroy() для текущего Activity. Затем Android создает новый экземпляр Activity и вызывает «методы жизненного цикла»: onCreate(), onStart() и onResume для этого экземпляра.
В случае, если приложение заявило, что оно хочет обработать изменение конфигурации самостоятельно (путем указания android:configChanges = "..." вместо Activity в манифесте), Android не уничтожает Activity при повороте экрана. Вместо этого Android вызывает «метод жизненного цикла»: onConfigurationChanged() на текущем Activity.
2) For example, user push the button on his mobile app and create new Activity. Lifecycle methods will be called, but OS state or configuration was't change. It means, my definition of lifecycle methods is wrong. How to describe it correctly? Help me to understand what's wrong with my first definition.
«Методы жизненного цикла» относятся не только к изменениям состояния или конфигурации ОС. «Методы жизненного цикла» также призваны информировать ваш Activity об изменениях в состоянии самого Activity. onCreate() вызывается, чтобы сообщить Activity, что Android только что создал новый экземпляр Activity и что Activity должен инициализировать себя. onResume() вызывается, чтобы сообщить Activity, что теперь пользователь увидит текущий Activity (самый верхний Activity в своей задаче и видимый на экране). onPause() призван сообщить Activity, что другой Activity станет текущим Activity. onConfigurationChanged() вызывается для информирования Activity о том, что на устройстве произошло изменение конфигурации (это может быть одна из множества разных вещей, включая: локаль, размер экрана, плотность экрана, ориентацию экрана, наличие клавиатуры и т. д. Существует множество других «методов жизненного цикла». ", которые Android вызывает в определенное время в течение жизни Activity.