Поиск по этому блогу

вторник, 22 марта 2011 г.

Pro Android 2 - Глава 2. Получение первого опыта (продолжение)

Hello World!

Первым приложением, которое пишут люди, начинающие изучать новый язык программирования, является "Hello World!". Следуя данной традиции, здесь будет описан этот процесс. Итак, приступим:

1. Запустите Eclipse и выберите File -> New -> Project. В диалоговом окне нового проекта выберите Android и нажмите Next. Вы должны увидеть окно New Android Project (как на рисунке ниже).


2. Заполните поля "Project name" (название создаваемого проекта), "Application name" (название создаваемого приложения), "Package name" (название пространства имен - в нем будут располагаться файлы классов приложения), "Create Activity" (название базового класса приложения - базовое активити, которое будет запускаться при открытии приложения) и "Min SDK Version" (минимальная версия SDK, которую должно поддерживать устройство, на которое устанавливается создаваемое приложение) как указано на рисунке выше.

3. После нажатия на кнопку "Finish" ADT сгенерирует скелет проекта. Далее следует открыть файл HelloActivity.java из папки src (которая отображается слева - в браузере проектов) и изменить его содержимое следующим образом:

/* Вызывается, когда активити создается в первый раз */
@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     /* создание TextView и размещение в нем текста "Hello World!" */
     TextView tv = new TextView(this);
     tv.setText("Hello World!");
     /* размещение TextView в представлении активити */
     setContentView(tv);
}

Ecipse должен автоматически подключить (import) необходимые библиотеки (в том числе android.widget.TextView). Если же этого не произошло, необходимо это сделать вручную.
После создания проекта его можно запустить в эмуляторе. Перед этим необходимо создать предпочитаемую конфигурацию запуска:

1. Выбрать Run -> Run Configurations.
2. В появившемся диалоговом окне необходимо дважды щёлкнуть на Android Application в левой панели. Должен появится новый элемент с именем New_configuration.
3. Переименовать новый элемент в RunHelloWorld.
4. Нажать кнопку Browse... и выбрать проект HelloAndroid.
5. Выбрать пункт Launch и в нем com.androidbook.HelloActivity (как на рисунке ниже).



6. Нажать Apply и Run. Так как в системе ещё не создано ни одного виртуального устройства (эмулятора), она выдаст сообщение об ошибке с предложением его создать. Необходимо ответить Yes.


7. Появится окно со всеми существующими эмуляторами в системе на данный момент (на данный момент, скорее всего, их не будет).



8. В появившемся окне в поле "Name" необходим ввести название создаваемого эмулятора, в поле "Target" выбрать необходимую версию ОС Andoird. Можно добавить SD карту в эмулятор, установив её размер в поле "Size". В поле "Built-in" можно выбрать различные скины для эмуляторов. После задания всех настроек эмулятора, следует нажать Create AVD.


Примечание: приложения, созданные для более старой версии ОС Android, будут работать на всех новых версия ОС, но обратной совместимости нету.

9. Далее следует выбрать из списка созданный эмулятор и нажать OK.
10. Eclipse запустит эмулятор и откроет в нем созданное приложение (загрузка эмулятора занимает продолжительное время, поэтому следует дождаться её окончания).



Виртуальные устройства Android

Виртуальные устройства Android - это эмуляторы реальных Android-устройств (на компьютере они представляют собой файлы с расширение img + конфигурационные файлы).
С их помощью можно тестировать приложения для различных конфигураций мобильных устройств.
Эмулятор может быть как один, так и несколько. Просмотреть список доступных виртуальных устройств Android можно через Eclipse (Window -> Android SDK and AVD Manager -> Virtual Devices).
Создавать различные эмуляторы можно через Android SDK and AVD Manager, либо используя bat-файл с именем "android" из папке tools Android SDK (например, c:\android-sdk-windows\tools\) с помощью команды "create avd" (пример): android create avd -n OlderAVD -t 2 -c 32M -p C:\AVD\OlderAVD\
Где, create avd - вызов метода создания AVD, n - название AVD, t - целевая версия ОС (1 - Android 1.1, 2 - Android 1.5, 3 - Android 1.6 и так далее), с - размер карты памяти в байтах (К - килобайты, M - мегабайты), p - путь к создаваемому AVD.

Изучение структуры Android-приложений

Сложность и размеры android-приложений могут сильно варьироваться. Однако, их структура практически всегда будет аналогична. На рисунке ниже представлена структура ранее созданного приложения "HelloWorld!".


Как видно из рисунка выше, android-приложений состоит из набора файлов и папок, причём не все из них являются обязательными (О - обязательные, Н - необязательные):
  • AndroidManifest.xml (O) - файл-дескриптор, который определяет основные компоненты приложения;
  • src (O) - папка, содержащая исходный код приложения;
  • assets (H) - папка, в которой может содержаться произвольный набор других папок и файлов;
  • res (O) - папка, содержащая ресурсы приложения;
  • drawable (H) - папка, содержащая изображения;
  • anim (H) - папка, содержащая XML-дескрипторы, которые описывают анимацию, используемую в приложении;
  • layout (H) - папка, содержащая элементы пользовательского интерфейса (в формате XML);
  • menu (H) - папка, содержащая XML-дескрипторы, которые описывают меню приложения;
  • values (H) - папка, содержащая другие ресурсы приложения (строки, стили, цветовые схемы);
  • xml (H) - папка, содержащая другие файлы-дескрипторы;
  • raw (H) - папка, содержащая данные, которые не должны быть преобразованы при компилировании приложения.
Примечание:
  1. Android поддерживает только линейный список файлов в стандартных папках. Например, он не поддерживает папки вложенные в папку layout (или в другие папки в папке res).
  2. Папки assets и raw похожи между собой. Однако, ресурсам из папки raw присваиваются идентификаторы (с их помощью можно обратиться к ним из кода программы), а содержимому из папки assets не присваиваются (именно по тому, что содержимое из папки assets не является ресурсами, в неё можно поместить в произвольном виде различные папки и файлы).
Изучение жизненного цикла Android-приложений

Жизненный цикл приложения жёстко контролируется системой и зависит от пользовательских потребностей, доступных ресурсов и многого другого. Если пользователь работает с каким-либо активити в текущий момент, то система присваивает ему приоритетное значение, и, наоборот, если активити не отображается пользователю, то, в случаем нехватки ресурсов, она закроет его.

Примечание: каждое android-приложение работает в отдельном процессе, который выполняется в своей собственной виртуальной машине (DVM).

Система сохраняет данные выполняемых процессов перед запуском новых, так как, в случае нехватки ресурсов, некоторые процессы могут быть закрыты.

Методы, контролирующие жизненный цикл приложения:
  • protected void onCreate(Bundle savedInstanceState);
  • protected void onStart();
  • protected void onRestart();
  • protected void onResume();
  • protected void onPause();
  • protected void onStop();
  • protected void onDestroy();


Метод onCreate() вызывается только при первом запуске приложения. onCrete() всегда следует перед onStart(). Однако, он не всегда предшествует ему, так как onStart() может быть вызван, если приложение было остановлено методом onStop().
Когда вызывается метод onStart(), активити не отображается пользователю. Сразу же после него следует метод onResume() и активити становится видимым для пользователя.
Когда активити переходит на второй план, система вызывает метод onResume(), затем - onPause(). После него может следовать либо onResume(), либо onStop(). onResume() вызывается, если пользователь возвращает первое активити на передний план, onStop() - если активити становится невидимым для пользователя.
Если после вызова метода onStop() активити возвращается на первый план, то вызывается метод onRestart().
Если активити находится в стеке, но не видимо для пользователя, то система может его уничтожить. В этом случае вызывается метод onDestroy().

Отладка Android-приложений

Android SDK включает множество инструментов для отладки создаваемых приложений. Они интегрированы с Eclipse IDE (Window -> Show View -> Other -> Android).
Наиболее часто используемым инструментом является LogCat. В нём выводятся различные логи приложений, исключения, системные сообщения.
Для того, чтобы выводить сообщения из своего приложения необходимо использовать класс android.util.Log. С помощью него можно выводить сообщения об ошибках, а также информационные и предупреждающие сообщения. Их вывод можно фильтровать в LogCat.

Пример использования класса Log:
Log.v("string TAG", "This is my message to write to the log");



Также можно получить детальную информацию о приложении с помощью класса android.os.Debug. Он обеспечивает запуск (Debug.startMethodTracing()) и остановку (Debug.stopMethodTracing()) трассировки приложения (её результаты можно просмотреть используя средство traceview, входящее в Android SDK).

4 комментария:

  1. Спасибо. Хорошая статья. Жду продолжениея.

    ОтветитьУдалить
  2. Спасибо.
    p.s. Боюсь продолжения не будет еще около месяца, т.к. в данный момент свободного времени практически нету.

    ОтветитьУдалить
  3. Личный вопрос. Что нужно знать, чтобы стать Andrpoid программистом? Какие минимальные требования при устройстве на работу?

    ОтветитьУдалить
  4. У каждой фирмы свой подход, поэтому однозначно я не смогу Вам ответить. Могу сказать лишь то, что смотрят не только на знание платформы Android :-)

    ОтветитьУдалить