SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
ОС 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)
Как работать с
множеством
экранов?
ldpi: 1 dip = 0,75px
mdpi: 1 dip = 1px
hdpi: 1 dip = 2px
       1 dip = 1,5px
xhdpi:


px - пиксели
in, mm, pt - дюймы, миллиметры, точки (1/72
дюйма)
dip - Абстрактные пиксели, зависящие от
плотности экрана
sp - Похожи на dip, но в данном случае
учитывается размер шрифта, который установил
пользователь.
Из чего состоит
 приложение?
    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
                   Sandbox
• Каждое приложение имеет свой Linux
  user Id
• Для каждого приложения запускается
  своя Dalvik VM
• Любой компонент приложения, будет
  запускаться в своем Linux процессе
Рабочие лошадки
               приложения
    Activity                                       Service




•   малосвязанные                         •   работают в фоне (backgroud)

•   не подходят для длительных операций   •   подходят для длительных операций
Activity   Service
Взаимодействие
    Intent
Component name
Action
Data
Category
Extras
Flags




•                     * можем создать свой Action
    Explicit intent: startActivity, startService,
    passData
•   Implicit intent: internet on/off, screen off, battery
Intent filters
Служат для фильтрации implicit intents
Explicit and Implicit
                  examples                                         broadcast intent (implicit):
                    DownloadImageService                           component: null
                                                                   action: com.mycorporation.myapp.complete




BroadcastReceiver                                                            BroadcastReceiver
                          intent (explicit):
MainListActivity          component:DownloadImageService                     DetailActivity
                          action: com.mycorporation.myapp,download
                          data: http://clipart.com/awesome.jpg




                     intent (explicit): component:DetailActivity
Разработка приложения
        TulaDev для Android
Use cases:
•   Видеть информацию о следующей встрече
•   Видеть архив прошедших встреч
•   Получать новости и анонсы
•   Голосовать за будущие темы
•   Отмечаться на встрече (розыгрыш призов)
•   Смотреть слайды оффлайн
https://play.google.com/store/apps/details?id=com.cod
                    emasters.tuladev
Разработка приложения
  TulaDev для Android
Вопрос 1. Откуда брать данные для
          отображения?
Откуда брать данные.
        Схема 1. Activity шлет запрос


ListActivity




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

                                 REST API


ListActivity




                        SQLite
Откуда брать данные.
                 Схема 3 Используем сервис
                           REST API
                                3 http GET /events

BroadcastReceiver
                                  DownloadService

  ListActivity


                                   4 storeEventsInDb()


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


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


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

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

Когда данные обновятся на сервере
Разработка приложения
    TulaDev для Android
        По требованию пользователя




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


Http pooling   web sockets
Google Cloud Messaging



GCM анонсирован 26 июня 2012 года, пришел на
замену C2DM
Увеличивает время жизни батареи (все приложения
используют один общий канал)
Сервер обрабатывает запрос на рассылку за 4.7
миллисекунды его обновления данных и для поста
Мы используем
новостей
Как работает GCM
         Обновление данных
                     Content-
                     Type:application/jsonAuthorizatio
                     n:key=AIzaSyB-1uEai2...{
                     “registration_ids” :
                     [“APA91bHun4MxP5eg..., ...]
                       “collapse_key”: “data_update”
                     “data” : { “Action” : “updateData”}}




Server
Как работает GCM
    Уведомления (новости)
                   Content-
                   Type:application/jsonAuthorizatio
                   n:key=AIzaSyB-1uEai2...{
                   “registration_ids” :
                   [“APA91bHun4MxP5eg..., ...]
                     “data” :
                   { “Action” : “updateData”,
                   “Data”: “Не проспите завтра
                   наш доклад об Android ”}}




Server
Как работает GCM
Features. Reliability
Как работает GCM
   Features. Time To Live


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


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


По умолчанию TTL = 4 недели
Как работает GCM
         Features. Message
             Multicasting

Запрос


                        до1000


            Ответ
Как работает GCM
    Features. Collapse Key
Запросы




                       только 1 сообщение
Как работает GCM
        Features. Throttling




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

                           Server
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
Спасибо за
 внимание

Вопросы?

Weitere ähnliche Inhalte

Was ist angesagt?

Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekYa_Cheburek
 
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2drupalconf
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidSQALab
 
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...ScrumTrek
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nixAlexander Gerasiov
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETAlexander Byndyu
 
Эволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеЭволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеAlexander Byndyu
 
Android - 05 - Android basics
Android - 05 - Android basicsAndroid - 05 - Android basics
Android - 05 - Android basicsNoveo
 

Was ist angesagt? (12)

Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by Cheburek
 
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
Антон Григорьев, Git-flow: как построить процесс разработки и быстро получать...
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Lecture 11 1
Lecture 11 1Lecture 11 1
Lecture 11 1
 
Net framework
Net frameworkNet framework
Net framework
 
Модульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NETМодульное тестирование и TDD в .NET
Модульное тестирование и TDD в .NET
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Эволюция управления зависимостями в коде
Эволюция управления зависимостями в кодеЭволюция управления зависимостями в коде
Эволюция управления зависимостями в коде
 
Android - 05 - Android basics
Android - 05 - Android basicsAndroid - 05 - Android basics
Android - 05 - Android basics
 

Andere mochten auch

Лекция Android. Хранение данных
Лекция Android. Хранение данныхЛекция Android. Хранение данных
Лекция Android. Хранение данныхАлександр Брич
 
{HSE Inc} Разработка под Android
{HSE Inc} Разработка под Android{HSE Inc} Разработка под Android
{HSE Inc} Разработка под AndroidPavel Krivoruchko
 
Разработка приложений для android
Разработка приложений для androidРазработка приложений для android
Разработка приложений для androidInfoShell
 
Андроид для чайников
Андроид для чайниковАндроид для чайников
Андроид для чайниковArseniy Finbeкg
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...metaform
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИPavel Tsukanov
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...Pavel Tsukanov
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladevPavel Tsukanov
 
Sql azure federations
Sql azure federations Sql azure federations
Sql azure federations Pavel Tsukanov
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMPavel Tsukanov
 
Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout Pavel Tsukanov
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Pavel Tsukanov
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВPavel Tsukanov
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++Pavel Tsukanov
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.Pavel Tsukanov
 

Andere mochten auch (20)

Лекция 2. Activity.
Лекция 2. Activity.Лекция 2. Activity.
Лекция 2. Activity.
 
Лекция Android. Хранение данных
Лекция Android. Хранение данныхЛекция Android. Хранение данных
Лекция Android. Хранение данных
 
Fragments, ActionBar, Drawer
Fragments, ActionBar, DrawerFragments, ActionBar, Drawer
Fragments, ActionBar, Drawer
 
{HSE Inc} Разработка под Android
{HSE Inc} Разработка под Android{HSE Inc} Разработка под Android
{HSE Inc} Разработка под Android
 
Разработка приложений для android
Разработка приложений для androidРазработка приложений для android
Разработка приложений для android
 
Андроид для чайников
Андроид для чайниковАндроид для чайников
Андроид для чайников
 
Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
 
Thinking in parallel ab tuladev
Thinking in parallel ab tuladevThinking in parallel ab tuladev
Thinking in parallel ab tuladev
 
Sql azure federations
Sql azure federations Sql azure federations
Sql azure federations
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout
 
RESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGNRESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGN
 
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
Алгоритмы шифрования и их применение в .Net приложениях для защиты данных.
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
 
Unit tests
Unit testsUnit tests
Unit tests
 

Ähnlich wie Лекция Android

Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Empatika
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений guest800050
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, MicrosoftYandex
 
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016РИФ-Воронеж
 
Лекция 4
Лекция 4Лекция 4
Лекция 4itc73
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...solit
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
белогорцев глеб белогорцев
белогорцев глеб белогорцевбелогорцев глеб белогорцев
белогорцев глеб белогорцевrit2010
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidDataArt
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKCisco Russia
 
Presentation JavaME
Presentation JavaMEPresentation JavaME
Presentation JavaMEscassau
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"DataArt
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 
Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"MobiDev
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015Alexandr Petrov
 

Ähnlich wie Лекция Android (20)

Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1Android Development Course in HSE lecture #1
Android Development Course in HSE lecture #1
 
Hivext 04.2010
Hivext 04.2010Hivext 04.2010
Hivext 04.2010
 
Hivext – облачная платформа для быстрой разработки интернет приложений
Hivext – облачная платформа для быстрой разработки  интернет приложений Hivext – облачная платформа для быстрой разработки  интернет приложений
Hivext – облачная платформа для быстрой разработки интернет приложений
 
Bada
BadaBada
Bada
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
 
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
Денис Неклюдов. Держи свое приложение на волне новинок. РИФ-Воронеж 2016
 
Лекция 4
Лекция 4Лекция 4
Лекция 4
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
белогорцев глеб белогорцев
белогорцев глеб белогорцевбелогорцев глеб белогорцев
белогорцев глеб белогорцев
 
Антон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в androidАнтон Валюх - Использование паттерна Mvvm в android
Антон Валюх - Использование паттерна Mvvm в android
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDKПрограммируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
Программируемость фабрики ACI. Объектная модель, REST API, ACI Python SDK
 
Presentation JavaME
Presentation JavaMEPresentation JavaME
Presentation JavaME
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"Вебинар "Оптимизация производительности мобильных веб-приложений"
Вебинар "Оптимизация производительности мобильных веб-приложений"
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 

Mehr von Pavel Tsukanov

Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverPavel Tsukanov
 
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVМАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVPavel Tsukanov
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯPavel Tsukanov
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS Pavel Tsukanov
 
АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5Pavel Tsukanov
 
ХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫPavel Tsukanov
 
ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.Pavel Tsukanov
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Pavel Tsukanov
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFPavel Tsukanov
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Как писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDPavel Tsukanov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.Pavel Tsukanov
 
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Применение нейронных сетей и генетических алгоритмов при торговле на бирже. Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Применение нейронных сетей и генетических алгоритмов при торговле на бирже. Pavel Tsukanov
 

Mehr von Pavel Tsukanov (17)

Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriver
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVМАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯ
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5
 
ХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫ
 
ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Как писать красивый код или основы SOLID
Как писать красивый код или основы SOLIDКак писать красивый код или основы SOLID
Как писать красивый код или основы SOLID
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
PaaS и SaaS
PaaS и SaaSPaaS и SaaS
PaaS и SaaS
 
TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.TDD (Test-driven Development) как стиль разработки.
TDD (Test-driven Development) как стиль разработки.
 
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Применение нейронных сетей и генетических алгоритмов при торговле на бирже. Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
 

Лекция Android

  • 1. ОС Android и специфика мобильной разработки Киреев Артем, Codemasters International akireev@codemastersintl.com www.codemastersintl.com
  • 2. План • Что такое Android? • Основные компоненты приложения и их взаимодействие • Опыт разработки приложения TulaDev: веб-сервисы, GCM (C2DM).
  • 3. OS Android • ОС для смартфонов и встраиваемых систем • Разработка началась в 2003 • Первый проданный телефон HTC Dream 2008 • Open Source • ARM, MIPS, x86
  • 5. Что нужно чтобы начать разрабатывать под Android? • Любая ОС (Windows, Linux, OS/X) • JDK (Java Development Kit) • Android SDK: • Emulator • ADB (Android Debug Bridge) • Eclipse with Android ADT plugin (or Jetbrains IDEA, ...)
  • 7. Размеры экранов Размер Плотность Самый популярный размер: 470dip x 320 dip = WVGA800 (480x800)
  • 8. Как работать с множеством экранов? ldpi: 1 dip = 0,75px mdpi: 1 dip = 1px hdpi: 1 dip = 2px 1 dip = 1,5px xhdpi: px - пиксели in, mm, pt - дюймы, миллиметры, точки (1/72 дюйма) dip - Абстрактные пиксели, зависящие от плотности экрана sp - Похожи на dip, но в данном случае учитывается размер шрифта, который установил пользователь.
  • 9. Из чего состоит приложение? Manifest -имя JAVA пакета -разрешения для приложения - Activity, Services.. -Связанные библиотеки -Минимальный уровень API Классы (src) Ресурсы (res)
  • 10. Верстка 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)
  • 11. Изолированность приложения Android Sandbox • Каждое приложение имеет свой Linux user Id • Для каждого приложения запускается своя Dalvik VM • Любой компонент приложения, будет запускаться в своем Linux процессе
  • 12. Рабочие лошадки приложения Activity Service • малосвязанные • работают в фоне (backgroud) • не подходят для длительных операций • подходят для длительных операций
  • 13. Activity Service
  • 14. Взаимодействие Intent Component name Action Data Category Extras Flags • * можем создать свой Action Explicit intent: startActivity, startService, passData • Implicit intent: internet on/off, screen off, battery
  • 15. Intent filters Служат для фильтрации implicit intents
  • 16. Explicit and Implicit examples broadcast intent (implicit): DownloadImageService component: null action: com.mycorporation.myapp.complete BroadcastReceiver BroadcastReceiver intent (explicit): MainListActivity component:DownloadImageService DetailActivity action: com.mycorporation.myapp,download data: http://clipart.com/awesome.jpg intent (explicit): component:DetailActivity
  • 17. Разработка приложения TulaDev для Android Use cases: • Видеть информацию о следующей встрече • Видеть архив прошедших встреч • Получать новости и анонсы • Голосовать за будущие темы • Отмечаться на встрече (розыгрыш призов) • Смотреть слайды оффлайн
  • 19. Разработка приложения TulaDev для Android Вопрос 1. Откуда брать данные для отображения?
  • 20. Откуда брать данные. Схема 1. Activity шлет запрос ListActivity REST API
  • 21. Откуда брать данные. Схема 2. Activity шлет запрос и сохраняет в базе REST API ListActivity SQLite
  • 22. Откуда брать данные. Схема 3 Используем сервис REST API 3 http GET /events BroadcastReceiver DownloadService ListActivity 4 storeEventsInDb() SQLite
  • 23. Разработка приложения TulaDev для Android Вопрос 2. Как часто обновлять данные? При каждом запуске приложения При смене табов По расписанию По требованию пользователя Когда данные обновятся на сервере
  • 24. Разработка приложения TulaDev для Android По требованию пользователя Когда данные обновятся на сервере Http pooling web sockets
  • 25. Google Cloud Messaging GCM анонсирован 26 июня 2012 года, пришел на замену C2DM Увеличивает время жизни батареи (все приложения используют один общий канал) Сервер обрабатывает запрос на рассылку за 4.7 миллисекунды его обновления данных и для поста Мы используем новостей
  • 26. Как работает GCM Обновление данных Content- Type:application/jsonAuthorizatio n:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “collapse_key”: “data_update” “data” : { “Action” : “updateData”}} Server
  • 27. Как работает GCM Уведомления (новости) Content- Type:application/jsonAuthorizatio n:key=AIzaSyB-1uEai2...{ “registration_ids” : [“APA91bHun4MxP5eg..., ...] “data” : { “Action” : “updateData”, “Data”: “Не проспите завтра наш доклад об Android ”}} Server
  • 29. Как работает GCM Features. Time To Live Сообщениям можно задать время жизни от 0 секунд до 4 недель Сообщения с TTL = 0, не хранятся в GCM По умолчанию TTL = 4 недели
  • 30. Как работает GCM Features. Message Multicasting Запрос до1000 Ответ
  • 31. Как работает GCM Features. Collapse Key Запросы только 1 сообщение
  • 32. Как работает GCM Features. Throttling Нотификация об изменении данных на сервере DoS Server
  • 33. Google Play Регистрация в качестве разработчика = 25$ Время от подачи заявки до появления в Google Play ~ 4h No Problem with Google Play
  • 34. Итоги • Android - OpenSource операционная система с Dalvik VM • Приложение: Манифест + ресурсы + Activity + Service • GCM (Google Cloud Messaging) - канал доставки данных. • Google Play - 25$ and no problem