Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МобПрограмм №3

.docx
Скачиваний:
2
Добавлен:
27.11.2023
Размер:
596.21 Кб
Скачать

Цель работы: ознакомится с ключевым компонентом системы Android компонентом Activity.

Все приложения Android имеют строго определенный системой жизненный цикл. При запуске пользователем приложения система дает этому приложению высокий приоритет. Каждое приложение запускается в виде отдельного процесса, что позволяет системе давать одним процессам более высокой приоритет, в отличие от других. Благодаря этому, например, при работе с одними приложениями Android позволяет не блокировать входящие звонки. После прекращения работы с приложением, система освобождает все связанные ресурсы и переводит приложение в разряд низкоприоритетного и закрывает его.

Все объекты activity, которые есть в приложении, управляются системой в виде стека activity, который называется back stack. При запуске новой activity она помещается поверх стека и выводится на экран устройства, пока не появится новая activity. Когда текущая activity заканчивает свою работу (например, пользователь уходит из приложения), то она удаляется из стека, и возобновляет работу та activity, которая ранее была второй в стеке.

После запуска activity проходит через ряд событий, которые обрабатываются системой и для обработки которых существует ряд обратных вызовов:

protected void onCreate(Bundle saveInstanceState);

protected void onStart();

protected void onRestart();

protected void onResume();

protected void onPause();

protected void onStop();

protected void onDestroy();

Схематично взаимосвязь между всеми этими обратными вызовами представляется следующим образом:

Метод onCreate() всегда вызывается при создании и перезапуске Activity. Нотация @Override обозначает, что переопределяется стандартный метод класса Activity.class. Внутри этого метода интерфейс связывается с классом Activity посредством метода setConetentView(). Этот метод принимает в параметре объект Bundle, содержащий текущее состояние пользовательского интерфейса, сохраненное при последнем вызове обработчика onSavedInstanceState. Также инициализируются статические данные.

@Override

public void onCreate() { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

Метод onStart() запускается при старте Activity вслед за методом onCreate(), но не всегда, поскольку метод onStart() также вызывается при возобновлении работы приложения после того, как оно было остановлено. При остановке вызывается метод onStop(), это происходит в момент скрытия активности, например, когда открывается другое приложение.

Метод onResume() вызывается после метода onStart(), когда окно отображается на экране и пользователь может с ним взаимодействовать посредством графического интерфейса. Происходит инициализация переменной mConnect, которая устанавливает соединение с каким-либо устройством, это соединение было закрыто в методе onPause().

@Override

publicvoidonResume() { super.onResume();

if (mConnect == null) { conectDevice();

}

}

Метод onPause() вызывается, если открывается новаяActivity, а текущая помещается в стек неактивных. В этом методе необходимо высвободить ресурсы, занятые текущей активностью – выключить камеру, остановить воспроизведение потокового видео и т. д. Также важно в этом методе размещать быстрый легковесный код, в противном случае, если, например, при вызове данного метода осуществлять запись в БД каких- либо больших данных, процесс перехода к другой активности будет замедлен, что негативно скажется на отзывчивости программного интерфейса.

Метод onStop() вызывается, когда окно становится невидимым пользователю. Это произойдет в том случае, если была запущена другая активность. В этом методе можно размещать операции, которые требуют длительного времени на выполнение, например, обновление пользовательского интерфейса, чтение показаний датчика GPS. При нехватке памяти система Android может сама уничтожить скрытуюActivity, минуя метод onStop() с вызовом методаonDestroy().

Метод onRestart() вызывается в тот момент, когда окно возвращается в приоритетный режим после вызова метода onStop(). Т. е. в момент, когда активность была остановлена и снова запущена. Метод onRestart() предшествует вызову метода onStart(). Данный метод можно использовать при повторном вызове активности для восстановления ее параметров и элементов пользовательского интерфейса.

Метод onDestroy() вызывается по окончании работы Activity посредством вызова метода finish() либо в момент уничтожения экземпляра активности системой Android.

Ход работы

Создали пустой проект. Язык программирования выбрали Java, минимальную версию SDK android выбрали 6.0 marshmallow.

В файле activity_main.xml, который определяет интерфейс для класса MainActivity в виде xml, написали код.

В файле MainActivity.java – который отвечает за поведение Activity, написали код событий жизненного цикла приложений.

Подключили смартфон к android studio для запуска приложения, предварительно включив режим отладки в нем.

Запустили приложение.

Вывод: в ходе лабораторной работы ознакомились с ключевым компонентом Activity системы Android.

Контрольные вопросы:

  1. Что такое элемент Activity?

Ответ: компонент для создания визуального интерфейса в приложении Android является activity (активность).

  1. Перечислите элементы жизненного цикла Activity.

Ответ:

  • protected voidonCreate();

  • protected voidonStart();

  • protected voidonRestart();

  • protected voidonResume();

  • protected voidonPause();

  • protected voidonStop();

  • protected voidonDestroy().

  1. Какие методы Activity вызываются при смене ориентации устройства?

Ответ: По умолчанию, при смене ориентации Android уничтожает и пересоздаёт активность из кода, что подразумевает повторный вызов метода onCreate(). Поэтому при повороте активность устанавливала текст, определенный в onCreate(). В большинстве случаев это не мешает программе. Но если приложение воспроизводит видео, то при смене ориентации вызов onCreate() может привести к повторному началу воспроизведения

  1. Каким образом происходит связывание интерфейса с Activity? Ответ:

Android Data Binding — Layout

Что касается файла разметки, View, тут уже есть серьезные отличия. Во-первых, корневой узел теперь — так называемый Layout. В разделе data указывается модель и то, как она будет называться (пространство имен). А дальше происходит отображение данных из UI на поля указанной модели (в данном случае это user.fullName, user.firstName и user.lastName — соответственно, те же поля внутри модели).

То есть, как и раньше, есть поля, есть модель и есть механизм связывания, который позволяет отобразить поля модели на элементы UI интерфейса. Разница заключается в том, что корневым узлом является Layout, и, кроме самого Layout, есть ещё секция с данными, где вы должны указать, какую модель вы используете.