Лекция Android

Post on 02-Jun-2015

934 views 0 download

description

Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android на Google Play

Transcript of Лекция Android

ОС Android и специфика мобильной

разработки

Киреев Артем, Codemasters International akireev@codemastersintl.com

www.codemastersintl.com

План

•Что такое Android?

•Основные компоненты приложения и их взаимодействие

•Опыт разработки приложения TulaDev: веб-сервисы, GCM (C2DM).

OS Android

•ОС для смартфонов и встраиваемых систем

•Разработка началась в 2003

•Первый проданный телефон HTC Dream 2008

•Open Source

•ARM, MIPS, x86

OS Android

Что нужно чтобы начать разрабатывать под Android?

•Любая ОС (Windows, Linux, OS/X)

•JDK (Java Development Kit)

•Android SDK:

•Emulator

•ADB (Android Debug Bridge)

•Eclipse with Android ADT plugin (or Jetbrains IDEA, ...)

Версии Android

Размеры экрановРазмер Плотность

470dip x 320 dip = WVGA800 (480x800)

Самый популярный размер:

Как работать с множеством экранов?

px - пикселиin, mm, pt - дюймы, миллиметры, точки (1/72 дюйма)dip - Абстрактные пиксели, зависящие от плотности экранаsp - Похожи на dip, но в данном случае учитывается размер шрифта, который установил пользователь.

ldpi: 1 dip = 0,75px mdpi: 1 dip = 1pxhdpi: 1 dip = 1,5pxxhdpi: 1 dip = 2px

Из чего состоит приложение?

Manifest-имя JAVA пакета-разрешения для приложения- Activity, Services..-Связанные библиотеки-Минимальный уровень APIКлассы (src)

Ресурсы (res)

Верстка UI<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="I am a TextView" />

<Button android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="I am a Button" />

</LinearLayout>

Linear Layout

Элементы внутри расположены в

ряд или в столбец

Relative LayoutПозволяет

определить расположение

элементов относительно друг друга (Элемент A

находится слева от B)

Изолированность приложения

Android

• Каждое приложение имеет свой Linux user Id

• Для каждого приложения запускается своя Dalvik VM

• Любой компонент приложения, будет запускаться в своем Linux процессе

Sandbox

Рабочие лошадки приложения

Activity

• малосвязанные

• не подходят для длительных операций

Service

• работают в фоне (backgroud)

• подходят для длительных операций

Activity Service

Взаимодействие

Component nameActionDataCategoryExtrasFlags

Intent

* можем создать свой Action• Explicit intent: startActivity, startService, passData

• Implicit intent: internet on/off, screen off, battery low

Intent filtersСлужат для фильтрации implicit

intents

Explicit and Implicit examples

MainListActivity DetailActivity

intent (explicit): component:DetailActivity

DownloadImageService

intent (explicit): component:DownloadImageServiceaction: com.mycorporation.myapp,downloaddata: http://clipart.com/awesome.jpg

BroadcastReceiveBroadcastReceiverr

BroadcastReceiveBroadcastReceiverr

broadcast intent (implicit):broadcast intent (implicit):component: nullcomponent: nullaction: action: com.mycorporation.myapp.completecom.mycorporation.myapp.complete

Разработка приложения TulaDev

для Android• Видеть информацию о следующей

встрече

• Видеть архив прошедших встреч

• Получать новости и анонсы

Use cases:

• Голосовать за будущие темы

• Отмечаться на встрече (розыгрыш призов)

• Смотреть слайды оффлайн

https://play.google.com/store/apps/details?id=com.codemasters.tuladev

Разработка приложения TulaDev

для AndroidВопрос 1. Откуда брать данные

для отображения?

Откуда брать данные. Схема 1. Activity шлет запрос

REST APIhttp GET /events

ListActivity

Откуда брать данные. Схема 2. Activity шлет запрос и

сохраняет в базе

ListActivity

SQLite

2 http GET /events

3 storeEventsInDb()

1 getEventsFromDb()

REST API

Откуда брать данные. Схема 3 Используем сервис

ListActivity

DownloadService

REST API

SQLite

6 getEventsFromDb()

2 startDownloadEvents()

3 http GET /events

4 storeEventsInDb()

5 broadcast complete intent

BroadcastReceiveBroadcastReceiverr

1 getEventsFromDb()

Разработка приложения TulaDev

для AndroidВопрос 2. Как часто обновлять данные?При каждом запуске приложения

При смене табов

По расписанию

По требованию пользователя

Когда данные обновятся на сервере

Разработка приложения TulaDev

для AndroidПо требованию пользователя

Когда данные обновятся на сервере

Http pooling

web sockets

Google Cloud Messaging

GCM анонсирован 26 июня 2012 года, пришел на замену C2DM

Увеличивает время жизни батареи (все приложения используют один общий канал)Сервер обрабатывает запрос на рассылку за 4.7 миллисекундыМы используем его обновления данных и для поста новостей

Как работает GCMОбновление данных

Server

1 Registration request

2 RegistrationId

3 Pass registrationId to TulaDev

4 о

бн

овл

ен

ие н

а се

рвере 5

Mes

sage

Content-Type:application/jsonAuthorization:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “collapse_key”: “data_update” “data” : { “Action” : “updateData”}}6 M

essage to device

7 http GET /api/events

Как работает GCMУведомления (новости)

Server

1 п

ост

новост

и

2 M

essa

ge

Content-Type:application/jsonAuthorization:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “data” : { “Action” : “updateData”,“Data”: “Не проспите завтра наш доклад об Android ”}}

3 Message to device

Как работает GCMFeatures. Reliability

Как работает GCMFeatures. Time To Live

Сообщениям можно задать время жизни от 0 секунд до 4 недель

Сообщения с TTL = 0, не хранятся в GCM

По умолчанию TTL = 4 недели

Как работает GCMFeatures. Message

Multicasting

Запрос

до1000

Ответ

Как работает GCMFeatures. Collapse Key

Запросы

только 1 сообщение

Как работает GCMFeatures. Throttling

Нотификация об изменении данных на сервере

Server

DoS

Google Play

Регистрация в качестве разработчика = 25$

Время от подачи заявки до появления в Google Play ~ 4h

No Problem with Google Play

Итоги

•Android - OpenSource операционная система с Dalvik VM

•Приложение: Манифест + ресурсы + Activity + Service

•GCM (Google Cloud Messaging) - канал доставки данных.

•Google Play - 25$ and no problem

Вопросы?

Спасибо за внимание