Принцип работы AndroidOS и приложений
Приложения под операционную систему Android разрабатываются в основном с использованием Java. Скомпилированный программный код (вместе со всеми файлами ресурсов и прочей необходимой информацией) упаковывается в специальный файл-архив, AndroidPackage. Этот файл имеет расширение *.apk и упаковывается специальной утилитой aapttool. Именно он в дальнейшем распространяется как программа и инсталлируется на мобильные устройства. Один такой файл связан с кодом одного приложения. И каждое приложение в Android живет в своем собственном мире – в такой машине. По умолчанию, каждая программа выполняется в своем собственном процессе, управлением которого занимается ядро Linux, которое также осуществляет менеджмент памяти. Таким образом, чаще всего код приложения выполняется в изоляции от всех других приложений. Android стартует процесс, когда возникает необходимость выполнить какой-нибудь программный код и завершает его, когда в нем больше нет необходимости и системные ресурсы требуются другим приложениям. По умолчанию, каждому приложению присваивается свой уникальный IDLinux-пользователя. Права доступа устанавливаются таким образом, чтобы файлы приложения были видны только этому пользователю и данному приложению. Хотя, есть способы, позволяющие экспортировать их в другие приложения. Например, существует возможность «разделения» одного и того же пользовательского ID между двумя приложениями. В таком случае, они смогут видеть файлы друг друга. Для того, чтобы экономить системные ресурсы, приложения с одинаковым ID можно также договориться запускать в одном и том же Linux-процессе, разделяя одну и ту же виртуальную машину.
Уровень среды исполнения Андроид.
В состав Android входит набор библиотек ядра, которые предоставляют большую часть функциональности библиотек ядра языка Java.
Платформа использует оптимизированную, регистр-ориентированную виртуальную машину Dalvik, в отличии от нее стандартная виртуальная машина Java – стек-ориентированная. Каждое приложение запускается в своем собственном процессе, со своим собственным экземпляром виртуальной машины. Dalvik использует формат DalvikExecutable (*.dex), оптимизированный для минимального использования памяти приложением. Это обеспечивается такими базовыми функциями ядра Linux, как организация поточной обработки и низкоуровневое управление памятью. Байт-код Java, на котором написаны ваши приложения, компилируются в dex-формат при помощи утилиты dx, входящей в состав SDK.
Библиотеки Андроид.
Платформа Android включает набор C/C++ библиотек, используемых различными компонентами ОС. Для разработчиков доступ к функциям этих библиотек реализован через использование ApplicationFramework. Представлены некоторые из библиотек:
System C library — BSD-реализация стандартной системной библиотеки C (libc) для встраиваемых устройств, основанных на Linux.
MediaLibraries – библиотеки, основанные на PacketVideo‘sOpenCORE, предназначенные для поддержки проигрывания и записи популярных аудио- и видео- форматов (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG и т.п.).
SurfaceManager – менеджер поверхностей управляет доступом к подсистеме отображения 2D- и 3D- графических слоев.
LibWebCore – современный движок web-браузера, который предоставляет всю мощь встроенного Android-браузера.
SGL – движок для работы с 2D-графикой.
3D libraries – движок для работы с 3D-графикой, основанный на OpenGL ES 1.0 API.
FreeType – библиотека, предназначенная для работы со шрифтами.
SQLite – мощный легковесный движок для работы с реляционными БД.
1.1 Компоненты приложений в Androidграмма приложение
Интересной чертой операционной системы Android является тот факт, что приложение в ней может использовать для своего функционала элементы других приложений, если, конечно, они предоставляют такой доступ. Например, если нашему приложению требуется отобразить прокручиваемый список изображений, а другое приложение уже имеет реализованный подходящий скроллер, открытый для других приложений, то можно просто вызвать его для осуществления этого действия и не разрабатывать свой собственный. При этом код нашего приложения не смешивается с кодом другого и не компонуется с ним. Скорее, он просто запускает некоторый кусок другого файла, когда возникает такая необходимость. Для обеспечения такого принципа работы, система должна быть способна запускать процесс приложения тогда, когда потребуется любая его часть и создавать экземпляры java-объектов именно для этой части. Поэтому приложения Android не имеют единой точки входа, как это принято в большинстве систем. Вместо этого их код представляет собой набор некоторых отдельных целостных сущностей, компонент, из которых система по мере необходимости может создавать экземпляры и использовать их.
Можно выделить четыре типа таких сущностей-компонент. Поговорим о каждой в отдельности.
Activities
Activity представляет собой внешний пользовательский интерфейс для одной операции, которую может совершить пользователь. Если упростить, то это просто один текущий экран как некоторая единица активности, своего рода кадр с одним пользовательским действием. Здесь и далее будет использоваться термин activity без перевода, как некоторое имя собственное. Хотя дословный перевод, «активность» или «действие», хорошо передает общий смысл компонента.
Например, activity может предоставить список пунктов меню, которые может выбрать пользователь или отобразить фотографии с их подписями. Или другой пример – приложение для мгновенного обмена сообщениями может использовать одно activity для того чтобы отобразить лист контактов, другое – чтобы создать сообщение для выбранного контакта, третье – чтобы посмотреть историю сообщений или выполнить настройки и так далее.
Приложение может состоять из всего одного activity или сразу из нескольких, как упомянутый ранее в качестве примера мессенджер. Какими именно будут activity и сколько их будет, зависит от конкретного приложения и его дизайна. Как правило, одно из activity помечается как первое, это означает, что оно будет предоставлено пользователю при запуске приложения. Одно activity может запускать другое. Таким образом, переход от одного activity к другому осуществляется тогда, когда текущее activity вызывает следующее.
Каждое activity предоставляет окно по умолчанию. Обычно окно создается в полноэкранном виде, но оно также может и не занимать весь экран и находиться поверх других окон. Activity также может задействовать дополнительные окна – например, всплывающее диалоговое для взаимодействия с пользователем в процессе работы activity, или окно для предоставления текущей информации при выборе какой-нибудь важной опции.
Визуальное содержание окна строится с помощью иерархии визуальных компонентов (или представлений) – объектов, производных от базового класса View. Каждый компонент представляет собой просто прямоугольное пространство внутри окна. Родительские компоненты содержат дочерние и организуют их расположение. Иерархию компонент можно представить в виде дерева, а те элементы, которые находятся в самой нижней его части (“листья”) и не имеют дочерних компонент, отрисовывают прямоугольные области и ожидают действий пользователя на этом участке. Для того чтобы поместить в окно такую иерархию, нужно вызвать метод Activity.setContentView(). Параметром метода является экземпляр класса View, лежащий в корне иерархии.
Services(сервисы) представляют из себя компоненты, которые работают в фоновом режиме. Он, как правило, требуется для длительных операций или для обеспечения работы удаленных процессов, но в общем случае это просто режим, который функционирует, когда приложение не в фокусе. Примером такого процесса может стать прослушивание музыки в то время, когда пользователь делает что-то другое или получение данных по сети без блокирования текущей активности. Сервис сам по себе не предоставляет пользовательского интерфейса, то есть с пользователем не взаимодействует, а запускается, управляется и связан с другими компонентами, например, activity. Также может запускаться вместе с системой.
Contentproviders Данный компонент управляет наборами данных, которые приложения предоставляют другим. Эти данные могут храниться в файловой системе, базах данных SQLite, в сети, или в любом другом постоянном месте, к которому приложение может иметь доступ. Посредством contentprovider другое приложение может запрашивать данные и, если выставлены соответствующие разрешения, изменять их. Например, система Android содержит contentprovider, который управляет пользовательской информацией о контактах. Он позволяет любому приложению, обладающему соответствующими правами вызывать составляющие этого компонента для того, чтобы считывать, записывать или изменять информацию о конкретном человеке.
Broadcastreceivers. Этот компонент отвечает за распространение общесистемных сообщений, отслеживание и реагирование на действия. Многие оповещения идут от системы, например, сообщения о том, что заряд батареи мал или экран выключен. Приложения также могут инициировать такие оповещения, например, сигнализировать о том, что информация загружена на устройство и доступна к использованию. Как и сервисы, broadcastreceiver не предоставляет пользовательского интерфейса, однако, он способен создавать уведомления в строке состояния, чтобы предупреждать пользователя о том, что произошло какое-то событие.
Внешний вид приложения.
«По сравнению с другими ОС, Android — одна из наиболее простых и одновременно комплексных платформ, вся система скачивается за один раз».
Большинство студентов используют телефоны с операционной системой Android, что позволяет сделать разрабатываемое приложение более доступным и тем самым обеспечивает студентам доступ красписанию вне института.
Задачи, подлежащие автоматизации:
1. Информирование об изменениях в расписании;
2. Информирование о текущих предметах.
Данное приложение может работать как в режиме online, так и в offline. В режиме offline приложение выполняет функцию предоставления материалов с возможностью просматривать ранее сохраненные данные (предмет, время, аудитория и т. п.). В режиме onlineпоявляется возможность полного информирования.
В его основе лежит система баз данных SQLite. «SQLite» - мощная и легковесная, отличается от многих обычных движков баз данных отсутствием типизации каждого столбца.
Когда приложение использует SQLite, их связь производится с помощью функциональных и прямых вызовов файлов, содержащих данные, а не кого-то интерфейса, что повышает скорость и производительность.
Глава II
Шаблон приложения.
Приложение позволяет получить актуальное расписание для любой группы БГУ. После первой загрузки с расписанием можно работать автономно. Если будет выбрано обновление, то приложение будет отражать появившиеся изменения: название предмета, имя преподавателя, расположение и время проведения. Кроме этого, есть возможность указывать чередования недель (первая неделя / вторая неделя / текущая неделя).
Проект приложения.