Upload
pavel-tsukanov
View
934
Download
0
Embed Size (px)
DESCRIPTION
Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android на Google Play
Citation preview
ОС Android и специфика мобильной
разработки
Киреев Артем, Codemasters International [email protected]
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
Вопросы?
Спасибо за внимание