Програмний запуск активностей – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Клас ListActivity містить захищений метод onListltemClickO, що викликається при натисканні елемента списку Нам потрібно перевизначити цей метод в нашому класі AndroidBasicsStarter Саме це ми і робили в лістингу 41

Аргументами цього методу є обєкт ListView (який ListActivity використовує для відображення елементів), View (що міститься в Li stView елемент, на який проводиться торкання), position (позиція натиснутого елемента в списку) і id, який нас не надто цікавить Насправді головне для нас – це аргумент position

MeTOflonLi stltemCl i cked досить законослухняний і першим ділом викликає метод базового класу При перевизначенні методів активності це завжди є гарною практикою Далі ми отримуємо імя класу з масиву tests, грунтуючись на аргументі position Це перший елемент головоломки

Раніше ми говорили про те, що можемо запускати активності, визначені в файлі маніфесту, програмно допомогою Intent Клас Intent володіє простим і зручним конструктором, який приймає два аргументи: екземпляр Context та примірник Class, який представляє Java-клас активності, яку ми хочемо запустити Context – це інтерфейс, що пропонує нам загальну інформацію про нашому додатку Він реалізується класом Activity, тому ми просто передаємо конструктору Intent посилання this

Щоб отримати примірник Class, який представляє запускаемую нами активність, ми використовуємо невелике відображення, з яким знайомі ті, хто працював з Java Статичний метод Class forName приймає рядок, містить повне імя класу, чий екземпляр ми хочемо отримати Всі тестові активності (які ми реалізуємо пізніше) містяться в пакеті com badl ogi с androi dgames Поєднуючи імя пакета з назвою класу, отриманого з масиву tests, ми отримуємо повне імя класу запускається активності, яке передаємо методу CI ass forName, і отримуємо таким чином хороший екземпляр CI ass, який можна передати конструктору Intent

Після створення екземпляра Intent ми можемо викликати метод startActivity, визначений у інтерфейсі Context Оскільки наша активність реалізує цей інтерфейс, ми просто викликаємо цю реалізацію Ось і все

Як же поводитиметься наш додаток Спочатку буде показана стартова активність Кожен раз, коли ми натискаємо елемент списку, запускається відповідна активність При цьому основна активність переходить в паузу і йде на задній план Нова активність буде створена наміром, які ми послали, і замінить стартову на екрані При натисканні кнопки Назад на телефоні активність буде знищена, на екрані відновиться стартова активність

&nbsp

Створення тестових активностей

При створенні нової тестової активності нам необхідно виконати наступні кроки

1 Створити відповідний клас Java в пакеті і реалізувати його логіку

2 Додати запис про нього в файл маніфесту, використовуючи всі необхідні атрибути (наприклад, android: conf igChanges або android: screenOri entati on) Зверніть увагу – ми не визначаємо елемент , оскільки запускаємо активність програмно

3 Додати імя класу активності в масив tests класу Androi dBasicsStarter

Після здійснення цих кроків обо всі іншому дбатиме логіка, реалізована нами в класі AndroidBasicsStarter Нова активність автоматично зявиться в списку і запуститься при натисканні її назви

Питання, яке вас може зацікавити, – запускається чи кожна тестова активність в окремому процесі та з власною віртуальною машиною Відповідь – ні Додаток, що складається з активностей, володіє так званим стеком активностей При кожному запуску нової активності вона поміщається в цей стек При її закриття остання активність, поміщена в стек, зявляється на екрані, стаючи нової діючої активністю

Даний механізм має свої складнощі По-перше, всі активності додатки (містяться в стеку на паузі і активна на екрані) ділять одну віртуальну машину, по-друге – поміщаються в одній області памяті Це може бути як позитивним, так і негативним моментом Якщо активність містить статичні поля, вони отримають свою область памяті при її запуску При цьому, будучи статичними, вони переживуть знищення самої активності і подальшу збірку сміття Як ви розумієте, при необережному поводженні зі статичними полями може відбутися витік памяті Подумайте двічі, перш ніж використовувати статичні Поля

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

ПРИМІТКА

Все залежить від глибини занурення в програмування користувальницьких інтерфейсів для Android Ми завжди будемо використовувати один обєкт View в активності для виводу і отримання вводу Якщо ви хочете вивчити такі можливості, як компоновка, угруповання уявлень, а також інші свистілки-звенелкі, пропоновані бібліотекою Android UI, можу запропонувати вам вивчити відмінне керівництво користувача на сайті Android Developers

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*