Методы жизненного цикла класса Activity

Методы жизненного цикла класса Activity
1
— Уведомление о начале создания активности. Метод onCreate вызывается после создания экземпляра Activity. Именно здесь происходит большая часть инициализации основной массы приложений: считывание макетов в память и создание экземпляров View, связывание с данными и т. д. Обратите внимание: если данный экземпляр Activity не был разрушен, а процесс не был завершен, то этот метод больше не вызывается. Он вызывается только при создании нового экземпляра класса Activity. Аргументом для данного метода является объект Bundle, содержащий сохраненное состояние приложения. Если сохраненного состояния нет, то этот аргумент имеет значение null.
                @Override
                public void onCreate(Bundle savedState) {
                    super.onCreate(savedState);
                    ...
                }
2
— Уведомление о том, что будет запущена активность. Метод onRestart вызывается только в том случае, если активность была остановлена. Остановлена — означает, что активность не находится на переднем плане и не взаимодействует с пользователем. Этот метод вызывается до метода onStart.
                @Override
                protected void onRestart() {
                    super.onRestart();
                    ...
                }
3
— Уведомление о том, что активность запускается. Метод onStart вызывается, когда объект Activity и его виды становятся видны пользователю.
                @Override
                protected void onStart() {
                    super.onStart();
                    ...
                }
4
— Уведомление о том, что активность будет взаимодействовать с пользователем. Пользователь получает возможность взаимодействовать с объектом Activity и его видами.
                @Override
                protected void onResume() {
                    super.onResume();
                    ...
                }
5
— Уведомление о том, что активность прекращает взаимодействовать с пользователем. Метод onPause вызывается перед тем, как должен стать видимым другой экземпляр Activity, а актуальная Activity перестает взаимодействовать с пользователем.
                @Override
                protected void onPause() {
                    super.onPause();
                    ...
                }
6
— Уведомление о том, что активность больше не видима пользователю и он не может с ней взаимодействовать.
                @Override
                protected void onStop() {
                    super.onStop();
                    ...
                }
7
— Уведомление о том, что активность будет удалена. Метод onDestroy вызывается перед тем, как экземпляр Activity должен быть уничтожен, то есть снят с использования. Перед вызовом этого метода активность уже перестала взаимодействовать с пользователем и больше не отображается на экране. Если этот метод вызывается в результате вызова finish, то вызов isFinishing возвратит true.
                @Override
                protected void onDestroy() {
                    super.onDestroy();
                    ...
                }

Методы, вызываемые во время жизненного цикла, когда состояние экземпляра следует сохранить или восстановить

8
— Сохранение состояния экземпляра. Здесь приложение получает возможность сохранить состояние экземпляра. Состояние экземпляра — это такое состояние, которое не сохраняется в долговременной памяти вместе с моделью данных приложения. Примером состояния экземпляра может быть, например, состояние индикатора или другого элемента, полностью входящего в состав объекта Activity. Этот метод имеет реализацию и в родительском классе: он вызывает метод onSaveInstanceState каждого объекта View в данном экземпляре Activity. В результате сохраняется состояние этих объектов View, и часто это единственное состояние, которое приходится сохранять таким образом. Данные, которые должен сохранить ваш подкласс, сохраняются при помощи методов put класса Bundle.
                @Override
                protected void onSaveInstanceState(Bundle outState) {
                    outState.putString("keyname", value);
                    super.onSaveInstanceState(outState);
                    ...
                }
9
— Метод onRetainNonConfigurationInstance вызывается после onStop. Это означает, что его вызов не гарантируется. А если он и вызван, то не гарантируется, что возвращенная ссылка будет сохранена и предоставлена последую щему экземпляру Activity. Метод getLastNonConfigurationInstance() может быть вызван в методе onCreate или позже, при восстановлении состояния активности.
            @Override
            protected void onRetainNonConfigurationInstance() {
                ...
            }
10
— Метод onRestoreInstanceState вызывается, когда имеется состояние экземпляра, которое следует восстановить. Если этот метод вызывается, то такой вызов происходит после onStart и до onPostCreate, редко используемого метода жизненного цикла.
            @Override
            protected void onRestoreInstanceState(Bundle savedState) {
                super.onRestoreInstanceState(savedState);
                // Восстановление из savedState
                if (savedState != null){
                    ...
                }
                // и из LastNonConfigurationInstance
                Object oldTaskObject = getLastNonConfigurationInstance();
                if (oldTaskObject != null){
                    int oldtask = ((Integer) oldTaskObject).intValue();
                    int currentTask = getTaskId();
                    // Задача не должна изменяться при изменениях конфигурации
                    assert oldtask == currentTask;
                }
                ...
            }

Второстепенные (редко используемые) методы жизненного цикла класса Activity.

11
— Метод onPostCreate вызывается после вызова метода onRestoreInstanceState. Он может быть полезен, если ваше приложение требует сохранять состояние в два этапа. Методу передается объект Bundle, содержащий состояние экземпляра.
            @Override
            protected void onPostCreate(Bundle savedState) {
                super.onPostCreate(savedState);
                ...
            }
12
— Метод onPostResume вызывается после onResume, когда экземпляр Activity должен быть видим и должен взаимодействовать с пользователем.
            @Override
            protected void onPostResume() {
                super.onPostResume();
                ...
            }
13
— Метод onUserLeaveHint вызывается перед тем, как активность должна перестать быть видимой и перестать взаимодействовать с пользователем из-за действий самого пользователя. Например, пользователь может нажать клавишу Back (Назад) или Home (Домой). Именно здесь удобно удалять уведомления и диалоговые окна.
            @Override
            protected void onUserLeaveHint() {
                super.onUserLeaveHint();
                ...
            }