Android activity (активність, діяльність)

Що таке Activity

Термін Activity ще не сформувався в російській мові у розробників. Деякі використовують слово Активність, інші - Діяльність. Щоб не плутатися в назвах, я буду використовувати термін Активність (дивись примітку).

Розробники зі стажем можуть сприймати Активність як форму. Прості додатки складаються з однієї активності. Більш складні програми можуть мати кілька вікон, тобто вони складаються з декількох активностей, якими треба вміти управляти і які можуть взаємодіяти між собою.

Активність, яка запускається першої, вважається головною. З неї можна запустити іншу активність. Причому не тільки ту, яка відноситься до нашого додатком, а й іншої програми. Користувачеві буде здаватися, що всі, що запускаються їм активності є частинами однієї програми, хоча насправді вони можуть бути визначені в різних додатках і працюють в різних процесах. Спробуйте сприймати активності як сторінки різних сайтів, що відкриваються в браузерах за посиланням.

Примітка: Якщо у слова activity взяти перші три символи і перемішати, то отримаємо cat. втім з слова активність теж можна отримати кота.

Зазвичай активність займає весь екран пристрою, але це не є обов'язковою вимогою. Ви можете створювати напівпрозорі і плаваючі вікна активностей. І з розвитком Android такий підхід набирає обертів.

Щоб створити активність, потрібно успадкувати від класу Activity і викликати метод onCreate (). В результаті ми отримаємо порожній екран. Толку від такого екрану ніякого. Тому в активність додають компоненти, фрагменти за допомогою розмітки.

Життєвий цикл активності

Активність має життєвий цикл - початок, коли Android створює екземпляр активності, проміжний стан, і кінець, коли екземпляр знищується системою і звільняє ресурси. Активність може перебувати в трьох станах:

  • активна (active або running) - активність знаходиться на передньому плані екрана. Користувач може взаємодіяти з активним вікном;
  • призупинена (paused) - активність втратила фокус, але все ще видима користувачу. Тобто активність знаходиться зверху і частково перекриває цю активність. Призупинена активність може бути знищена системою в критичних ситуаціях при нестачі пам'яті;
  • зупинена (stopped) - якщо ця діяльність повністю закрита інший активністю. Вона більше не видима користувачу і може бути знищена системою, якщо пам'ять необхідна для більш важливого процесу.

Якщо активність, яка була знищена системою, потрібно знову показати на екрані, вона повинна бути повністю перезапущено і відновлена ​​в своєму попередньому стані.

Активність у вигляді діалогового вікна

Пам'ятайте, вивчаючи теми. ми створили другу активність у вигляді діалогового вікна. З таким же успіхом ви можете створити вікно і для основної активності. Додамо в маніфесті для активності рядок:

Напишемо код для запуску:

Зверніть увагу, що в даному прикладі ми не використовуємо розмітку, а програмно створюємо екземпляр класу TextView з необхідними властивостями (текст, відступи) і передаємо його в метод setContentView ().

Android activity (активність, діяльність)

Програмнного створення активності

В основному ми користуємося XML-розміткою для формування зовнішнього вигляду активності. Це рекомендований спосіб і в 99% ви будете використовувати саме його. Але в деяких випадках можливо вам знадобиться створити активність програмно. Складного там нічого немає, для загального розвитку стане в нагоді.

Якщо в стандартному випадку ми підключаємо XML-файл в методі setContentView (R.layout.activity_main). то при програмному створенні даний метод нам не знадобиться. Видаляємо його і пишемо код:

Принцип формування наступний - створюємо об'єкт LinearLayout (або інший контейнер) і налаштовуємо необхідні властивості. Далі створюємо необхідні дочірні елементи і також налаштовуємо їх властивості. Не забуваємо підключити дочірній елемент до батьківського через метод addView ().

В даному прикладі ми також присвоюємо компонентів ідентифікатори через метод setId (). хоча необхідності в цьому не було. У прикладі ця можливість показана для демонстрації. Якщо ви використовуєте ідентифікатори, то у файлі res / values ​​/ stings.xml додайте рядки:

Зазвичай досвідчені програмісти створюють окремий файл для ідентифікаторів, наприклад, res / values ​​/ ids.xml.

Класи Activity в Android

Android SDK включає набір класів, успадкованих від Activity. Вони призначені для спрощення роботи з віджетами, які часто зустрічаються в звичайному інтерфейсі. Перерахуємо деякі з них (найбільш корисні).

  • MapActivity. Інкапсулює обробку ресурсів, необхідних для підтримки елемента MapView всередині Активності.
  • ListActivity. Обгортка для класу Activity, головна особливість якої - віджет ListView, прив'язаний до джерела даних, і обробники, що спрацьовують при виборі елемента зі списку.
  • ExpandableListActivity. Те ж саме, що і ListActivity, але замість ListView підтримує ExpandableListView.
  • TabActivity. Дозволяє розмістити кілька активних або уявлень в рамках одного екрану, використовуючи вкладки для перемикання між елементами.

додаткове читання