Читать книгу Разработка Android-приложений в деталях - Тимур Машнин - Страница 10
Activity-компонент
ОглавлениеСгенерированная мастером Android Project основа Android-проекта Blank Activity в узле src окна Package Explorer содержит файл исходного кода Activity-компонента, в котором его класс, расширяющий класс android.app.Activity, переопределяет метод onCreate ().
Данный метод является одним из методов обратного вызова Activity-компонента, которые среда выполнения Android вызывает при переходе Activity-компонента между различными состояниями его жизненного цикла. Переопределение метода onCreate () является важным, так как он вызывается при запуске Activity-компонента и предназначен для инициализации GUI-интерфейса.
Помимо метода onCreate () класс android.app.Activity предоставляет следующие методы обратного вызова для их переопределения:
onRestart – метод жизненного цикла, вызывается после того как Activity-компонент был остановлен, перед вызовом метода onStart.
onStart – метод жизненного цикла, вызывается, когда Activity-компонент становится видимым.
onResume – метод жизненного цикла, вызывается, когда Activity-компонент помещается на передний план для взаимодействия с пользователем.
onPause – метод жизненного цикла, вызывается, когда Activity-компонент помещается на задний план. После данного метода может вызываться метод onResume, если Activity-компонент помещается снова на передний план, или метод onStop, если Activity-компонент становится невидимым.
onStop – метод жизненного цикла, вызывается, когда Activity-компонент становится невидимым. После данного метода может вызываться метод onRestart или метод onDestroy.
onDestroy – метод жизненного цикла, вызывается перед уничтожением Activity-компонента программным способом методом finish класса android.app.Activity или Android-системой для освобождения ресурсов.
onActionModeFinished – вызывается при окончании работы режима контекстного меню ActionMode.
onActionModeStarted – вызывается при запуске режима контекстного меню ActionMode для Activity-компонента.
onActivityResult – при запуске другого Activity-компонента методом startActivityForResult вызывается после закрытия запущенного Activity-компонента для обработки возвращаемых им результатов.
onAttachFragment – вызывается при присоединении объекта Fragment к объекту Activity между вызовами методов жизненного цикла Fragment. onAttach и Fragment. onCreate.
onAttachedToWindow – вызывается при присоединении окна Activity-компонента к Window-менеджеру, метод может быть использован вместо метода onCreate.
onBackPressed – вызывается при нажатии пользователем клавиши Back.
onConfigurationChanged – вызывается при изменении конфигурации устройства во время работы Activity-компонента, при этом информацию о новой конфигурации предоставляет объект android.content.res.Configuration.
onContentChanged – вызывается при изменении GUI-интерфейса Activity-компонента при вызове метода setContentView.
onContextItemSelected – вызывается при выборе элемента контекстного меню.
onContextMenuClosed – вызывается при закрытии контекстного меню.
onCreateContextMenu – вызывается при создании контекстного меню – меню, которое открывается при долгом нажатии на GUI-элементе.
onCreateDescription – вызывается перед вызовом метода onPause.
onCreateNavigateUpTaskStack – вызывается при создании стека задач.
onCreateOptionsMenu – вызывается при создании меню опций – меню, которое связано с Activity-компонентом.
onCreatePanelMenu – вызывается для инициализации содержимого меню (меню опций или контекстного меню).
onCreatePanelView – вызывается при создании панели меню.
onCreateThumbnail – вызывается перед вызовом метода onPause и позволяет определить для Activity-компонента значок, а не скриншот.
onCreateView – вызывается для создания фрагментом GUI-интерфейса.
onDetachedFromWindow – вызывается при отсоединении окна Activity-компонента от Window-менеджера.
onGenericMotionEvent – вызывается для необработанного события MotionEvent.
onKeyDown – вызывается для необработанного события KeyEvent при нажатии клавиши.
onKeyLongPress – вызывается для необработанного события KeyEvent при долгом нажатии.
onKeyMultiple – вызывается для необработанного события KeyEvent при многократном нажатии одной клавиши.
onKeyShortcut – вызывается для необработанного события KeyEvent при нажатии комбинации клавиш.
onKeyUp – вызывается для необработанного события KeyEvent при освобождении клавиши.
onLowMemory – вызывается при уменьшении оперативной памяти, когда система будет вынуждена остановить все фоновые процессы, используется для освобождения всех ненужных ресурсов.
onMenuItemSelected – вызывается при выборе элемента меню.
onMenuOpened – вызывается при открытии меню.
onNavigateUp – вызывается при нажатии кнопки Up.
onNavigateUpFromChild – вызывается, если дочерний Activity-компонент использует Up-навигацию.
onNewIntent – при запуске данного Activity-компонента другим Android-компонентом вызывается для уже существующего экземпляра Activity-компонента переднего плана своей задачи, имеющего атрибут android: launchMode=«singleTop» файла манифеста, или если вызывающий Android-компонент использует метод startActivity с флагом FLAG_ACTIVITY_SINGLE_TOP Intent-объекта, вместо создания нового экземпляра Activity-компонента.
onOptionsItemSelected – вызывается при выборе элемента меню опций.
onOptionsMenuClosed – вызывается при закрытии меню опций.
onPanelClosed – вызывается при закрытии панели меню.
onPostCreate – вызывается после вызова метода onRestoreInstanceState.
onPostResume – вызывается после вызова метода onResume.
onPrepareNavigateUpTaskStack – вызывается перед созданием стека задач.
onPrepareOptionsMenu – вызывается перед открытием меню опций.
onPreparePanel – вызывается перед открытием панели меню.
onProvideAssistData – вызывается, когда пользователь запрашивает помощь.
onRestoreInstanceState – вызывается после метода onStart для восстановления состояния Activity-компонента из объекта android. os. Bundle.
onSaveInstanceState – вызывается перед уничтожением Activity-компонента, перемещенного с переднего плана, Android-системой для освобождения ресурсов памяти. Данный метод предназначен для сохранения состояния Activity-компонента в объекте android. os. Bundle в виде пар имя-значение. Измененный объект Bundle передается Android-системой в методы onCreate (Bundle) и onRestoreInstanceState (Bundle).
onSearchRequested – вызывается при запуске поиска.
onTouchEvent – вызывается для необработанного события MotionEvent при прикосновении к экрану.
onTrackballEvent – вызывается для необработанного события MotionEvent при перемещении указателя.
onTrimMemory – вызывается при сокращении ненужной памяти у процесса.
onUserInteraction – вызывается при взаимодействии с пользователем.
onUserLeaveHint – вызывается, когда Activity-компонент перемещается на задний план в результате действий пользователя.
onWindowAttributesChanged – вызывается при изменении атрибутов окна.
onWindowFocusChanged – вызывается при потере или получении фокуса окном.
onWindowStartingActionMode – вызывается при запуске режима ActionMode для окна.
Другой метод обратного вызова класса android.app.Activity, который рекомендуется переопределять – это метод onPause (), вызываемый при потере фокуса Activity-компонентом и который предназначен для сохранения состояния Activity-компонента, так как Android-приложение не контролирует полностью жизненный цикл своих компонентов – Android-система может уничтожать приостановленные Activity-компоненты для освобождения ресурсов памяти.
В методе onPause () производится сохранение данных, общих для приложения или для использования другими приложениями, с помощью ContentProvider-компонента, или прямое сохранение измененных данных с помощью объекта SharedPreferences (сохранение пар имя-значение примитивных типов данных), метода openFileOutput () класса android.content.Context (сохранение данных во внутреннем хранилище устройства), метода getCacheDir () класса android.content.Context (кэширование данных), метода getExternalStorageDirectory () класса android. os. Environment (сохранение данных в карте памяти), сохранение данных в базе данных SQLite, в Web-сервисах с использованием пакетов java.net.* и android.net.*.
Использование метода onPause () для сохранения состояния Activity-компонента имеет свои преимущества, по сравнению с применением метода onSaveInstanceState (), так как метод onSaveInstanceState () не будет вызываться Android-системой, если Activity-компонент был уничтожен пользователем, например, нажатием клавиши BACK.
Переопределение методов onCreate (), onStart (), onRestart (), onResume (), onPause (), onStop (), onDestroy () и др. должно сопровождаться вызовом суперкласса с помощью ключевого слова super.
В переопределенном методе onCreate () класса Activity-компонента сгенерированной основы Android-проекта вызывается метод setContentView () класса android.app.Activity, устанавливающий GUI-интерфейс Activity-компонента на основе XML-файла activity_main. xml каталога ресурсов res/layout проекта.
В переопределенном методе onCreateOptionsMenu () класса Activity-компонента сгенерированной основы Android-проекта методом getMenuInflater () получается объект android.view.MenuInflater, отвечающий за создание объектов меню из XML-описания.
Переопределенный метод onOptionsItemSelected () класса Activity-компонента сгенерированной основы Android-проекта представляет каркас обработки выбора элементов меню.