SlideShare a Scribd company logo
Архитектура Android приложений
  Полезные и вредные советы

       Дмитрий Малыханов

        DataArt Solutions Inc.
Встречаем по одежке



• Современная платформа

• Простота использования

• Сотни тысяч приложений

• Удобные средства
  разработки
А надо ли провожать?




• Является ли Android мобильной
  платформой в традиционном понимании?

• Как нам быстрее разрабатывать
  качественные приложения?

• Можем ли мы свободно использовать
  знания других платформ/библиотек?
Традиционные мобильные
                 платформы

• Ограниченные ресурсы



• Упрощенный интерфейс


• Урезанные возможности
  программирования
Нет ограничений:
                    аппаратная часть

• 512 Mb RAM

• dual core CPU at 1Ghz

• Open GL ES 2.0

• аппаратная поддержка
  кодирования/декодирования multimedia

• 32Gb на внешнем носителе
Нет ограничений:
                  интерфейс




• Cенсорный (как
  правило, ёмкостный
  экран)

• Высокое разрешение (WVGA и выше)

• Множество аппаратных кнопок
Нет ограничений:
                  разработка


                          LD A,23
                          LD B,100
• Java 1.5, JIT           LD C,53
                          ADD A,B
• SQLite                  SUB C


• XML/JSON

• HttpClient
Что же общего?




Ёмкость аккумулятора конечна!

   Небходимо минимизировать нагрузку
(выполняемые действия) с целью экономного
          расходования энергии.
Архитектура платформы


"Официальная" диаграмма. Слишком универсально, чем
же это отличается от, например, JVM?




                                      ?
Законы архитектуры




1.Немедленный отклик на входящий звонок
2.Повторное использование компонентов
3.Тесная интеграция компонентов
Архитектура приложения




• Границы "приложения" размыты
• Как такового "приложения" нет
• Набор взаимодействующих компонент -
  "задача" (task).
Строим приложение: как?
Строим приложение:
повторное использование
Строим приложение:
повторное использование
Строим приложение:
повторное использование
Строим приложение:
повторное использование
Приложение: нити и
                  процессы

• Свободное использование нитей
  (threads)
• Свободное использование многих
  процессов
• Автоматическое разнесение компонентов
  по разным процессам

  Платформа обеспечивает управление
     процессами и межпроцессное
     взаимодействие компонентов.
Нити и процессы
Критерий: отзывчивость


Требование:
мгновенный ответ на
входящий звонок.

Вывод:
приложение должно
уметь моментально
уходить в фоновый
режим.
Android: MVC


MVC - это архитектурный шаблон.

Android не реализует какой-то конкретный framework.
Android, Real MVC: View


"Отвечает за отображение информации
(пользовательский интерфейс)."

android.view.*, android.widget.*
Android, Real MVC: Model


"Предоставляет данные, а также реагирует на запросы,
изменяя своё состояние."

android.content.*, android.database.*
Android, Real MVC: Controller

"Интерпретирует данные, введённые пользователем, и
информирует модель и представление о необходимости
соответствующей реакции."

android.widget.*Adapter, android.widget.*:event callbacks
Правило №1


              Java




Минимум средние знания Java 1.5.
Правило №1: Java!


                     Java
            нет, не так, лучше вот так:



               Java
   Минимум средние знания Java 1.5.

Если знаний Java нет - хорошее приложение
           создать не удастся.
"Настоящая" Java -
                     "настоящий" код?

Далеко не все подходы (design patterns & best
practices) из JSE/JEE применимы.




Критерии оценки JEE приложения и Android
приложения в корне различаются.
Singleton


Шаблон Singleton: масса
широко известных
недостатков


    Платформа гарантирует наличие
    единственного экземпляра класса
      android.app.Application.
Data Access Object




1.Мы не можем реально использовать что-
  либо вместо SQLite
2.SQLite тесно итегрирован с другими
  компонетами платформы.
Value Object

Value Object (Data Transfer Object)
                 +
               EJB
                 =
 минимум накладных расходов на
 сериализацию/десериализацию
Все уже интегрировано




Все компоненты платформы Android созданы с
учетом их тесного взаимодействия и максимально
интегрированы друг с другом.
Безопасность: права
                         доступа

Интеграция имеет свои
недостатки.

Какое приложение имеет
больше шансов напугать
пользователя?
Права доступа: что же
                          сломано?




Платформа Android            Android Market не
поддерживает гибкое          поддерживает зависимости
управление permissions.      между приложениями.
Права доступа:
                     уменьшать!




• Не запрашивать больше, чем реально нужно
  для работы приложения.


• Не использовать третьесторонних библиотек,
  требующих дополнительных permissions.
Права доступа: разделять




• Выделить permissions, не критичные для
  основной функциональности приложения, и
  вынести их в отдельные модули (APK)
Права доступа: зависимости




Минус: Android Market не поддерживает
зависимости между приложениями.

Плюс: пользователи уже привыкли к такому
подходу, так как много приложений уже
используют его.
Разнообразие рынка




Совет от Google:

Не раздражайте пользователя, не заставляйте его искать
альтернативы Вашему приложению.
Архитектура Android приложений
  Полезные и вредные советы



          Вопросы?
Архитектура Android приложений
  Полезные и вредные советы

       Дмитрий Малыханов

        DataArt Solutions Inc.

More Related Content

PPT
Лекция Android
PDF
Лекция 1. Введение в Android.
PPTX
Приступаем к разработке Android приложений
PDF
Публикация Android-приложений
PDF
Модульное тестирование и TDD в .NET
PDF
Plugin development for intelli j platform
PDF
Регулярное использование статического анализа кода в командной разработке
PPT
Свой проект на drupal.org от идеи до первого релиза.
Лекция Android
Лекция 1. Введение в Android.
Приступаем к разработке Android приложений
Публикация Android-приложений
Модульное тестирование и TDD в .NET
Plugin development for intelli j platform
Регулярное использование статического анализа кода в командной разработке
Свой проект на drupal.org от идеи до первого релиза.

What's hot (20)

PPT
Свой проект на Drupal.org от идеи до первого релиза
PPT
Open Source Testing Framework: real project example and best practices
PPT
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
PDF
Эволюция управления зависимостями в коде
PPT
Komelin drupalconf report_komelin_v2
PPT
Lecture 11 1
PPT
Lecture 11 1
PDF
Benefits of unit-testing and inversion of controll
PDF
DevOps guide for awesome quality assurance
PPTX
Gradle. Новый уровень автоматизации для Android
PDF
Юрий Василевский "Автоматизация в XCode"
PPT
Инструменты разработки ПО в *nix
PDF
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PDF
Refactoring
PDF
Introduction into Test Driven Development
PDF
лек11 1
PPTX
C++ осень 2012 лекция 12
PPTX
Software Development
PDF
UI Kit and design developig workflow
Свой проект на Drupal.org от идеи до первого релиза
Open Source Testing Framework: real project example and best practices
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Эволюция управления зависимостями в коде
Komelin drupalconf report_komelin_v2
Lecture 11 1
Lecture 11 1
Benefits of unit-testing and inversion of controll
DevOps guide for awesome quality assurance
Gradle. Новый уровень автоматизации для Android
Юрий Василевский "Автоматизация в XCode"
Инструменты разработки ПО в *nix
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Иван Крутов - Автоматизация сборки Java-проекта
Refactoring
Introduction into Test Driven Development
лек11 1
C++ осень 2012 лекция 12
Software Development
UI Kit and design developig workflow
Ad

Viewers also liked (13)

PPT
Андроид для чайников
PDF
Архитектура мобильных приложений - Тинькофф
PDF
Клиент-серверное взаимодействие под android в деталях
PPTX
Android презентация
PDF
{HSE Inc} Разработка под Android
PDF
JDK: CPU, PSU, LU, FR — WTF?!
PDF
Pragmatic functional refactoring with java 8 (1)
PDF
Разработка приложений для android
PDF
мифы о спарке
PDF
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
PDF
Karumi Dojo: Kata Maxibon
PPTX
Scalable Java Application Development on AWS
PDF
Advanced messaging with Apache ActiveMQ
Андроид для чайников
Архитектура мобильных приложений - Тинькофф
Клиент-серверное взаимодействие под android в деталях
Android презентация
{HSE Inc} Разработка под Android
JDK: CPU, PSU, LU, FR — WTF?!
Pragmatic functional refactoring with java 8 (1)
Разработка приложений для android
мифы о спарке
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Karumi Dojo: Kata Maxibon
Scalable Java Application Development on AWS
Advanced messaging with Apache ActiveMQ
Ad

Similar to JEE Conf: Архитектура Android приложений: полезные и вредные советы (20)

PPTX
SOLID – принципы объектно-ориентированного дизайна
PDF
Экскурс в мир WEB разработки
PPTX
Как не стать заложником одной платформы (MBLTdev)
PPTX
Gradle. Новый уровень автоматизации для Android
PPTX
Преимущества создания кроссплатформенных приложений с использованием Phone ga...
PDF
Appery.io Ukraine_2016
PPTX
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
PPT
Автоматизированное тестирование мобильных приложений
PPT
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
PPTX
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
PDF
Ценность платформы Octopod для разработчиков мобильных приложений
PPT
Тестирование мобильных приложений
PDF
Кроссплатформенная разработка
ODP
Presentation JavaME
PDF
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
PDF
Юрий Василевский «Автоматизация в XCode»
PDF
Аналитика мобильных приложений
PDF
Виктор Розаев - Как не сломать обратную совместимость в Public API
PDF
Tool View Interface of Integrated Development Environment / Исследование инте...
PPTX
методология Rad (46)
SOLID – принципы объектно-ориентированного дизайна
Экскурс в мир WEB разработки
Как не стать заложником одной платформы (MBLTdev)
Gradle. Новый уровень автоматизации для Android
Преимущества создания кроссплатформенных приложений с использованием Phone ga...
Appery.io Ukraine_2016
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
Автоматизированное тестирование мобильных приложений
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Ценность платформы Octopod для разработчиков мобильных приложений
Тестирование мобильных приложений
Кроссплатформенная разработка
Presentation JavaME
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
Юрий Василевский «Автоматизация в XCode»
Аналитика мобильных приложений
Виктор Розаев - Как не сломать обратную совместимость в Public API
Tool View Interface of Integrated Development Environment / Исследование инте...
методология Rad (46)

JEE Conf: Архитектура Android приложений: полезные и вредные советы