дипломная работа. Даар. Разработка службы курьерской доставки в мобильном приложении
Скачать 0.63 Mb.
|
3.3 Архитектура мобильных приложенийПри проектировании архитектуры будем придерживаться паттерна MVP. MVP (Model View Presenter) паттерн, являющийся производным от известного паттерна MVC (Model View Controller), становится все более значимым при разработке Android приложений. В Android мы имеем проблемы, вытекающие из-за тесной связи компонентов, Android (activity, fragment) с графическим интерфейсом и механизмами доступа к данным. Можно привести такие яркие примеры, как CursorAdapter, в котором смешаны адаптеры, которые являются часть графического представления с курсорами, которым отводитсяроль на уровне доступа к данным. Для создания расширяемых и поддерживаемых приложений необходимо уметь хорошо разделять эти уровни. Данная архитектура хорошо себя зарекомендовала в случаях, когда, например, приходится брать данные не из базы (или не только из базы), а из web-сервиса? Для того чтобы не «кописастить» весь код (Activity иди Fragment), меняя лишь участки кода который обращается к данным. MVP делает графическое представление независимым от источника данных. Разделим приложение, по крайней мере, на три уровня, позволяя тестировать каждый из них по отдельности. С MVP мы сможем протестировать большинство логики из Activity или Fragment не применяя инструментальные тесты. Presenter (предъявитель) Presenter является посредником между графическим представлением и моделью. Он извлекает данные из модели и возвращает их в удобной форме представлению. В отличии от типичного MVC он так же решает, что произойдет, при взаимодействии с представлением. View (представление) Как правило это Activity, Fragment или View, в зависимости от структуры приложения, содержащее ссылку на presenter. В идеале, добавление presenter-а осуществляется с помощью механизма внедрения зависимостей, таких как Dagger, в противном случаи в view должен быть создан объект presenter-а. Единственное, что view будет делать это вызывать методы presenter-а, каждый раз когда происходит взаимодействие с графическим интерфейсом (нажатие кнопок, свайпы и т.д). Model (модель) В приложении с хорошей многоуровневой архитектурой, model является точкой доступа к данным или бизнес логики. В «стерильной» архитектуре, model вероятно будет Interactor, который реализует какое-то действие. Рисунок 5 – Наглядная разница двух паттерновMVC иMVP 3.4 Средства разработки мобильных приложенийПриложения для Android пишутся на языке программирования Java. Инструменты Android SDK (SoftwareDevelopmentKit – комплект разработки программного обеспечения) компилируют написанный вами код – и все требуемые файлы данных и ресурсов – в файл APK – программный пакет Android, который представляет собой файл архива с расширением.apk. В файле APK находится все, что требуется для работы Android-приложения, и он позволяет установить приложение на любом устройстве под управлением системы Android. Каждое приложение Android, установленное на устройстве, работает в собственной «песочнице» (изолированной программной среде): операционная система Android представляет собой многопользовательскую систему Linux, в которой каждое приложение является отдельным пользователем; по умолчанию система назначает каждому приложению уникальный идентификатор пользователя Linux (этот идентификатор используется только системой и неизвестен приложению); система устанавливает полномочия для всех файлов в приложении, с тем чтобы доступ к ним был разрешен только пользователю с идентификатором, назначенным этому приложению; у каждого процесса имеется собственная виртуальная машина (ВМ), так что код приложения выполняется изолированно от других приложений; по умолчанию каждое приложение выполняется в собственном процессе Linux. Android запускает процесс, когда требуется выполнить какой-либо компонент приложения, а затем завершает процесс, когда он больше не нужен либо когда системе требуется освободить память для других приложений. Таким образом система Android реализует принцип предоставления минимальных прав. То есть каждое приложение по умолчанию имеет доступ только к тем компонентам, которые ему необходимы для работы, и ни к каким другим. Благодаря этому формируется исключительно безопасная среда, в которой приложение не имеет доступа к недозволенным областям системы. Однако у приложения есть варианты предоставления своих данных другим приложениям и доступа к системным службам: двум приложениям можно назначить один идентификатор пользователя Linux. В этом случае каждый из них сможет обращаться к файлам другого приложения. Для экономии ресурсов системы также можно сделать так, чтобы приложения с одинаковым идентификатором пользователя выполнялись в одном процессе Linux и использовали одну ВМ ( приложения также должны быть подписаны одним сертификатом); приложение может запросить разрешение на доступ к данным устройства, например к контактам пользователя, SMS-сообщениям, подключаемой карте памяти (SD-карте), камере, Bluetooth и др. Все разрешения должны предоставляться приложению при его установке. Официальной средой разработки под операционную систему Android является AndroidStudio. AndroidStudio – это интегрированная среда разработки (IDE) для работы с платформой Android, анонсированная 16 мая 2013 года на конференции Google I/O. IDE находилась в свободном доступе начиная с версии 0.1, опубликованной в мае 2013, а затем перешла в стадию бета-тестирования, начиная с версии 0.8, которая была выпущена в июне 2014 года. Первая стабильная версия 1.0 была выпущена в декабре 2014 года, тогда же прекратилась поддержка плагина AndroidDevelopmentTools (ADT) для Eclipse. AndroidStudio, основана на программном обеспечении IntelliJ IDEA от компании JetBrains, официальное средство разработки Android приложений. Основные функции AndroidStudio: способность работать с UI компонентами при помощи Drag-and-Drop, функция предпросмотра макета на нескольких конфигурациях экрана; сборка приложений, основанная на Gradle; различные виды сборок и генерация нескольких.apk файлов; рефакторинг кода; статический анализатор кода (Lint), позволяющий находить проблемы производительности, несовместимости версий и другое; встроенный ProGuard и утилита для подписывания приложений; шаблоны основных макетов и компонентов Android; поддержка разработки приложений для AndroidWear и Android TV; встроенная поддержка GoogleCloudPlatform, которая включает в себя интеграцию с сервисами GoogleCloudMessaging и AppEngine; способность работать с обновленным компилятором Jack, а также получила улучшенную поддержку Java 8 и усовершенствованную функцию InstantRun; В AndroidStudio 3.0 будут по стандарту включены инструменты языка Kotlin основанные на JetBrains IDE. |