Главная » Разработка для Android » Детальный обзор Активностей в Android

0

При создании экранов с графическим интерфейсом наследуется класс

Activity и используются Представления для взаимодействия с пользователем.

Каждая Активность — экран (по аналогии с Формой), который приложение может показывать  пользователям. Чем сложнее приложение, тем больше экранов нужно.

Создавайте Активности для каждого экрана, который хотите отобразить. Речь как минимум о начальном  экране, который отвечает за работу основ- ного пользовательского интерфейса приложения. Такой  интерфейс часто дополняется второстепенными Активностями, предназначенными для ввода информации, ее вывода, предоставления дополнительных возможностей. Запуск  новой Активности (или  возврат  из нее) инициирует перемещение между экранами.

Большинство Активностей проектируются таким образом, чтобы зани- мать весь экран, но вы можете создавать полупрозрачные или плавающие диалоговые окна.

Создание Активности

Наследуйте класс Activity, чтобы создать новую Активность. Внутри этого нового класса необходимо определить  пользовательский интерфейс и реа- лизовать нужную функциональность. Базовый каркас для новой Активности показан в листинге 3.9.

Листинг 3.9. Каркас для Активности

package com.paad.myapplication;

import android.app.Activity;

import android.os.Bundle;

public class MyActivity extends Activity {

/** Вызывается при первом создании Активности. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

}

Базовый класс Activity  представляет собой пустой экран, который ин- капсулирует всю работу по отображению  окна. Пустая Активность не особо нужна, поэтому первое, что необходимо сделать, — создать пользовательский интерфейс с помощью Представлений и разметки.

Представления  — элементы  управления, которые  отображают  данные и обеспечивают  взаимодействие с пользователем. Android  предоставляет несколько  классов  разметки,  наследников ViewGroup,  которые могут со- держать Представления для проектирования пользовательских интерфейсов.

Подробно Представления и объекты ViewGroup рассматриваются в гла- ве 4, из нее вы также узнаете, какие элементы  и как использовать,  а также как создавать собственные  Представления и экземпляры разметки.

Чтобы назначить  пользовательский интерфейс для Активности, внутри обработчика  onCreate вызовите  метод setContentView, принадлежащий объекту Activity.

В этом первом фрагменте в качестве пользовательского интерфейса для

Активности выступает элемент TextView:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); TextView textView = new TextView(this); setContentView(textView);

}

В будущем, скорее всего, вам потребуются более сложные интерфейсы. Вы можете создавать разметку  как в коде программы, используя объекты ViewGroup, так и с помощью внешних ресурсов, передавая соответствующий идентификатор. Этот стандартный для Android  подход показан  в следу- ющем фрагменте:

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

}

Чтобы использовать Активность в своем приложении, зарегистрируйте ее в манифесте. Добавьте новый тег <activity>внутри узла <application>. Данный тег включает атрибуты для хранения метаинформации: метку, зна- чок, необходимые полномочия и визуальные темы, используемые Активно- стью. Без соответствующего тега <activity> Активность не может быть выведена на экран.

Ниже  на примере  XML-кода  показано,  как добавить  тег для класса

MyActivity, созданного в листинге 3.9.

Листинг 3.10. Описание  Активности в формате XML

<activity android:label="@string/app_name"

android:name=".MyActivity">

</activity>

Внутри тега <activity>вы можете добавлять узлы <intent-filter>, описывающие Намерения, которые ваша Активность станет отслеживать для дальнейшего  взаимодействия. Каждый  Фильтр намерений определяет  одно или несколько действий и категорий, которые поддерживаются Активностью. Намерения и их Фильтры подробно рассматриваются в главе 5, но стоит от- метить, что Активность может быть доступна из главного меню запуска при- ложений только в том случае, если она содержит тег <intent-filter> для действия MAIN и имеет категорию LAUNCHER. На это обращено внимание в листинге 3.11.

Листинг 3.11. Описание  главной Активности для приложения

<activity android:label="@string/app_name" android:name=".MyActivity">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

Жизненный цикл Активности

Четкое  понимание  жизненного цикла  Активности важно для создания приложений, которые должны правильно управлять ресурсами и оставлять целостное впечатление.

Как уже говорилось ранее, приложения в Android не контролируют жиз- ненный цикл своих процессов, система сама управляет всеми программами и, как следствие, Активностями внутри них.

Во время контролирования процесса (в том числе при завершении его работы) состояние принадлежащей ему Активности помогает системе опреде- лить приоритет родительского приложения. Приоритет приложения, в свою очередь, влияет  на то, с какой  вероятностью  его работа (а также работа Активностей внутри него) будет прервана.

Стеки (очереди) Активностей

Состояние каждой Активности определяется ее позицией в соответствующей очереди — стеке (last-in-first-out) объектов Activity, запущенных в данный момент. При запуске новой Активности экран, находившийся на переднем плане, перемещается на вершину стека. Если пользователь вернется обратно с помощью кнопки ????? или работающий на переднем плане объект Activity закроется, следующая Активность в стеке перемещается  вверх и становится текущей.

Как уже говорилось, на приоритет  приложения влияет его самая при- оритетная Активность. Когда диспетчер  памяти  в Android  решает, какую программу закрыть, чтобы освободить ресурсы, он использует этот стек для определения приоритетов приложений на основе их Активностей.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии