какой компонент управляет распределенным множеством данных приложения
ТЕСТЫ по дисциплине «Разработка мобильных приложений»
Ищем педагогов в команду «Инфоурок»
МДК 01.03 Разработка мобильных приложений
1) Набор средств программирования, который содержит инструменты, необходимые для создания, компиляции и сборки мобильного приложения называется:
2) С какой целью был создан Open Handset Alliance?
А) писать историю развития ОС Android
б) продавать смартфоны под управлением Android
в) рекламировать смартфоны под управлением Android
г) разрабатывать открытые стандарты для мобильных устройств
3) С какой целью инструмент Intel* Graphics Performance Analyzers (Intel* GPA) System Analyzer используется в среде разработки Intel* Beacon Mountain?
а) позволить разработчикам оптимизировать загруженность системы при использовании процедур OpenGL
б) для ускорения работы эмулятора в среде разработки
в) для оптимизированной обработки данных и изображений
г) позволить разработчикам эффективно распараллелить С++ мобильные приложения
3) Библиотеки, реализованные на базе PacketVideo OpenCORE:
А ) Media Framework
4) Какой движок баз данных используется в ОС Android?
5) С какой целью инструмент Intel* Integrated Performance Primitives (Intel* IPP) используется в среде разработки Intel* Beacon Mountain?
А) для оптимизированной обработки данных и изображений
Б) позволить разработчикам оптимизировать загруженность системы при использовании процедур OpenGL
В) для ускорения работы эмулятора в среде разработки
Г) позволить разработчикам эффективно распараллелить С++ мобильные приложения
6) Intel XDK поддерживает разработку под:
Б ) Apple iOS, BlackBerry OS
В ) MtkOS, Symbian OS, Microsoft Windows 8
Г ) Android, Apple iOS, Microsoft Windows 8, Tizen
7) Каждый приемник широковещательных сообщений является наследником класса …
8) Какой класс является основным строительным блоком для компонентов пользовательского интерфейса (UI), определяет прямоугольную область экрана и отвечает за прорисовку и обработку событий?
9) Какой слушатель используется для отслеживания события касания экрана устройства?
10) В какой папке необходимо разместить XML файлы, которые определяют все меню приложения?
А ) res/value
Б ) res/items
В ) res/layout
Г ) res/menu
11) Фоновые приложения …
А) после настройки не предполагают взаимодействия с пользователем, большую часть времени находятся и работают в скрытом состоянии
Б) выполняют свои функции и когда видимы на экране, и когда скрыты другими приложениями
В) небольшие приложения, отображаемые в виде графического объекта на рабочем столе
Г) большую часть времени работают в фоновом режиме, однако допускают взаимодействие с пользователем и после настройки
12) Полный иерархический список обязательных файлов и папок проекта можно увидеть на вкладке …
13) Какой компонент управляет распределенным множеством данных приложения?
А) сервис (Service)
Б) активность (Activity)
В) приемник широковещательных сообщений (Broadcast Receiver)
Г) контент-провайдер (Content Provider)
14) Какой язык разметки используется для описания иерархии компонентов графического пользовательского интерфейса Android-приложения?
15) Выберите верную последовательность действий, необходимых для создания в приложении контент-провайдера.
А) Создание класса наследника от класса ContentProvider; Определение способа организации данных; Заполнение контент-провайдера данными
Б) Проектирование способа хранения данных; Определение способа организации данных;
В) Создание класса наследника от класса ContentProvider; Заполнение контент-провайдера данными; Определение способа работы с данными
Г) Проектирование способа хранения данных; Создание класса-наследника от класса ContentProvider; Определение строки авторизации провайдера, URI для его строк и имен столбцов
16) Выберите верные утверждения относительно объекта-намерения (Intent).
А) представляет собой структуру данных, содержащую описание операции, которая должна быть выполнена, и обычно используется для запуска активности или сервиса
Б) используется для передачи сообщений пользователю
В) используется для получения инструкций от пользователя
Г) используются для передачи сообщений между основными компонентами приложений
17) Расположение элементов мобильного приложения:
А) полезно для передачи иерархии
Б) влияет на удобство использования
В) полезно для создания пространственных отношений между объектами на экране и объектами реального мира
Г) все варианты ответа верны
18) Какие элементы управления применяются для действий по настройке?
А) командные элементы управления
Б) элементы выбора
В) элементы ввода
Г) элементы отображения
19) Примерами комбо-элементов не являются:
А) комбо-список
Б) все вышеперечисленное
В) комбо-кнопка
Г) комбо-поле
20) Дизайн или проектирование интерфейса для графических дизайнеров:
А) все варианты ответа верны
Б) прозрачность и понятность информации
В) тон, стиль, композиция, которые являются атрибутами бренда
Г) передача информации о поведении посредством ожидаемого назначения
21) Более крупные элементы:
А) привлекают больше внимания
Б) все варианты ответа верны
В) размер не влияет на уровень внимания
Г) привлекают меньше внимания
22) К традиционным типографическим инструментам не относят
А) масштаб
Б) цвет
В) разреженность
Г) выравнивание по сетке
23) К элементам ввода относят:
А) ограничивающие элементы ввода
Б) ползунки
В) счетчики
Г) все вышеперечисленное
24) Выделяют следующие категории плотности экрана для Android-устройств:
А) HDPI, XHDPI, XXHDPI, и XXXHDPI
Б) правильный вариант ответа отсутствует
В) LDPI, MDPI, HDPI, XHDPI, XXHDPI, и XXXHDPI
Г) LDPI, MDPI, HDPI
25) Следующие утверждения не верны:
А) не используйте интерфейсные элементы
Б) картинки работают быстрее, чем слова
В) на любом шаге должна быть возможность вернуться назад
Г) если объекты похожи, они должны выполнять сходные действия
26) Следующие утверждения верны:
А) текстура бесполезна для передачи различий или привлечения внимания
Б) восприятие направления затруднено при больших размерах объектов
В) все варианты ответа верны
Г) люди легко воспринимают контрастность
27) Основные вкладки (FixedTabs) удобны при отображении
А) от четырех вкладок
Б) двух вкладок
В) трех и более вкладок
Г) трех и менее вкладок
28) Диалоговое окно, содержащее линейку процесса выполнения какого-то действия — это
29) Уведомления стоит использовать, когда
А) сообщение не требует ответа пользователя, но важно для продолжения его работы
Б) сообщение является важным и требует немедленного прочтения и ответа
В) сообщение является важным, однако требует немедленного прочтения, но не ответа
Г) сообщение является важным, однако не требует немедленного прочтения и ответа
30) Какой метод запускает новую активность?
31) ProgressDialog это:
А) контейнер для создания собственных диалоговых окон
Б) диалоговое окно с предопределенным интерфейсом, позволяющее выбрать дату или время
В) диалоговое окно, содержащее линейку процесса выполнения какого-то действия
Г) диалоговое окно, которое может содержать заголовок, до трех кнопок, список выбираемых значений или настраиваемое содержимое
32) AlertDialog это:
А) контейнер для создания собственных диалоговых окон
Б) диалоговое окно, содержащее линейку процесса выполнения какого-то действия
В) диалоговое окно, которое может содержать заголовок, до трех кнопок, список выбираемых значений или настраиваемое содержимое
Г) диалоговое окно с предопределенным интерфейсом, позволяющее выбрать дату или время
33) Что необходимо сделать при добавлении в проект новой активности?
А) скачать и установить специальный инструмент MultiActivity SDK
Б) прописать в манифесте информацию о новой активности
В) создать новый проект
Г) запустить эмулятор
34) Системы позиционирования смартфона могут включать
А) все перечисленное
Б) систему GPS
В) систему ГЛОНАСС
Г) сигналы WiFi и Bluetooth
35) Какая константа не определена в классе MotionEvent, для обозначения сенсорных событий
36) С какой целью используется метод release() в классах MediaPlayer и MediaRecorder?
А) конец жизненного цикла объекта и освобождение ресурсов
Б) перевод объекта в ожидающее состояние
В) обновление объекта и запуск его работы
Г) создание объекта и запуск его работы
37) К датчикам окружающей среды, встроенным в мобильное устройство относят
А) датчики вектора вращения
Б) датчики освещенности
В) акселерометры
Г) гироскопы
38) Библиотека Universal Image Loader for Android позволяет :
А) парсить HTML-страницы
Б) строить графики и диаграммы
В) загружать, кешировать и отображать изображения
Г) использовать анимацию, доступную только с версии 3.х, на более ранних вариантах платформы Android
39) Facebook SDK for Android — это библиотека, позволяющая:
А) получать доступ к информации любого пользователя
Б) отправлять рекламные сообщения от имени пользователя
В) писать сообщения на стену, читать и менять статусы, смотреть ленту друзей
Г) парсить страницы пользователей
40) Что из перечисленного не относится к правилам безопасности при подключении библиотек?
А) с осторожностью использовать библиотеки из сомнительных источников
Б) ознакомиться с форумами и сайтами, где могут обсуждаться библиотеки
В) лично познакомиться с разработчиками библиотеки
Г) использовать скомпрометированные библиотеки
41) Библиотека MapNavigator предназначена для:
А) работы с любыми картами
Б) работы с Яндекс.Картами
В) морской навигации
Г) работы с картами Google Maps
42) Библиотека jsoup не позволяет:
А) находить и извлекать данные, используя DOM и селекторы CSS
Б) манипулировать HTML-элементами, атрибутами и текстом
В) писать сообщения на стену, читать и менять статусы, смотреть ленту друзей
Г) принимать в качестве параметра URL, файл или строку
43) При настройке обратной совместимости необходимо добавить в файл манифеста следующую информацию:
А) только минимальную версии Android SDK
Б) минимальную и основную (целевую) версии Android SDK
В) информацию о подключенной библиотеке
Г) только основную (целевую) версии Android SDK
44) Какая библиотека предназначена для упрощения загрузки изображений?
А ) Yandex.Metrica for Apps;
Б ) Universal Image Loader for Android
В ) ActionBarSherlock
Г ) NineOldAndroids
45) Библиотеки совместимости предназначены для
А) сбора статистики
Б) рисования графиков
В) использования возможностей, появившиеся в какой-то версии ОС Android, на более ранних версиях платформы
Г) подключения нестандартных элементов управления
46) Какая библиотека предназначена для использования анимации?
А ) Universal Image Loader for Android
Б ) NineOldAndroids
В ) Yandex.Metrica for Apps
Г ) ActionBarSherlock
47) Для чего служит папка res/anim/ проекта?
А) в этой папке находятся файлы, содержащие набор картинок, предназначенных для кадровой анимации
Б) в этой папке находятся файлы, содержащие анимированные ролики для воспроизведения в приложении
В) в этой папке находятся XML файлы, задающие реализацию анимации свойств
Г) в этой папке находятся XML файлы, задающие последовательность инструкций анимации преобразований
48) В какой файл обязательно добавляется информация при создании нового Activity в приложении?
49) Какой метод жизненного цикла активности вызывается системой непосредственно перед появлением активности на экране?
50) С какой целью используется метод SurfaceHolder.lockCanvas()?
А) блокировка Canvas для перерисовки
Б) игнорирование дальнейшего взаимодействия с Canvas
В) сокрытие Canvas
Г) блокировка Canvas от сворачивания
51) Может ли мобильное приложение получить доступ к базе данных, созданной в другом приложении?
А) не может ни при каких обстоятельствах
Б) может, но только с помощью контент-провайдеров
В) право на доступ открывает приложение-хозяин базы данных
Г) может обращаться напрямую
52) С помощью какого метода можно запретить смену ориентации устройства, при запущенном приложении?
А ) setRequestedOrientation
Б ) setChangeOritentation
В ) disableChangeOrientation
Г ) setOritentation
53) Какой из датчиков не используется для определения положения смартфона в пространстве?
54) К новым возможностям HTML5 относят (выберите все верные варианты ответа):
А) возможность добавления аудио и видео без использования вспомогательных средств
Б) возможность рисования на холсте
В) возможность прямого доступа к оперативной памяти
Г) форматирование данных в режиме таблицы
55) Возможен ли перенос приложений iOS* в среду HTML5:
А) нет, прямой перенос приложений невозможен
Б) да, используя средства Intel XDK
В) да, используя только сторонние средства
Г) да, только для iPhone, используя средства Intel XDK
56) Следующие утверждения верны:
А) JavaScript не позволяет подключать другие внешние библиотеки, написанные на других языках
Б) приложения html5 исполняются быстрее и требуют меньше ресурсов, чем «нативные»
В) среда Intel XDK не работает с мультисенсорностью
Г) приложения html5 исполняются медленнее и требуют больших ресурсов, чем «нативные»
57) Разрабатывать приложения в среде Intel XDK можно:
А) пользоваться заготовленными примерами
Б) все варианты ответа верны
В) «с нуля», прописывая все элементы
Г) использовать встроенный «дизайнер элементов» для отрисовки элементов
58) JavaScript не позволяет:
А) получать прямой доступ к памяти
Б) работать с реестром
В) работать с картами
Г) одновременно использовать несколько подключаемых библиотек
59) В среде Intel XDK можно разрабатывать приложения для следующих платформ:
А) Android
Б) все варианты ответа верны
В) Apple iOS
Г) Tizen
60) В заготовке любого приложения, разрабатываемого в среде Intel XDK прописана:
А) все варианты ответа верны
Б) скрытие окна заставки Intel XDK
В) настройка размеров приложения под размеры устройства
Г) фиксация размеров приложения (запрет «скроллинга»)
61) Создавать и редактировать пользовательский интерфейс приложений в среде Intel XDK можно:
А) используя встроенное приложение App Designer
Б) только изменяя готовые шаблоны с интерфейсом
В) все варианты ответа неверны
Г) только прописывая теги вручную
62) Удобное средство обмена между двумя NFC-устройствами:
63) Переключения между активностями осуществляются
А) только при помощи кнопок
Б) только с использованием сенсорного экрана смартфона
В) только при помощи кнопок и других элементов управления
Г) все три варианта возможны
Архитектура Android-приложений. Часть III — основные части приложения
Итак, мы уже говорили о происхождении архитектуры ОС Android и о шаблонах, реализованных в этой архитектуре. Теперь настала пора поговорить о том, из чего состоит Android-приложение.
В этой статье будут представлены основные «персонажи» архитектуры Android-приложения.
В общем случае, Android-приложение состоит из:
Java классы
На следующей диаграмме представлена иерархия основных классов из Android SDK, с которыми предстоит иметь дело разработчику:
На самом деле классов намного больше, но это основные. Выделенные жёлтым — те, с которыми разработчик работает непосредственно (в частности, наследуются от них). Остальные так же важны, но они реже используются напрямую.
View — базовый класс для всех виджетов пользовательского интерфейса (GUI widgets). Интерфейс Android-приложения представляет собой дерево экземпляров наследников этого класса. Можно создать это дерево программно, но это неправильно. Пользовательский интерфейс определяется с помощью XML (файлы слоёв, layout files), а во время исполнения автоматически превращается (inflate, термин Android) в дерево соответствующих объектов.
Класс Activity и его подклассы содержат логику, лежащую за пользовательским интерфейсом. При ближайшем рассмотрении этот класс соответствует ViewModel в архитектурном шаблоне Model-View-ViewModel (MVVM). Отношение между подклассом Activity и пользовательским интерфейсом — это отношение один к одному; обычно каждый подкласс Activity имеет только один связанный с ним слой пользовательского интерфейса, и наоборот. Activity имеет жизненный цикл.
В течении жизненного цикла Activity может находиться в одном из трёх состояний:
Класс ContentProvider и его подклассы представляют model в архитектуре MVVM. В большинстве практических случаев это обёртка над базой данных SQLite с немного причудливым способом доступа на основе URI. Теоретически, никто не мешает разработчику создать ContentProvider на основе чего-то ещё, кроме базы данных. Тем не менее, существующий метод query() контент-провайдера возвращает объект Cursor, который крайне похож на JDBC ResultSet интерфейсом и тем, как он работает. Поэтому вряд ли кто-то усомнится, что настоящее назначение контент-провайдеров — инкапсулировать базу данных.
Я не знаю, как комманда Android пришла к такому дизайну, но, по-моему, здесь соединены две хороших, но не слишком совместимых идеи.
И вот почему я так считаю. Основная идея контент-провайдеров, похоже, базируется на архитектуре AJAX приложений. AJAX приложения обычно используют архитектуру MVVM, где модель представлена как URI на стороне сервера (тем не менее, это изменилось с поялвинем HTML5, который позволяет хранить данные локально). В самом деле, тот факт, что контент-провайдеры запрашиваются с помощью URI и создают расширение с помощью типов MIME указывает на то, что в основе лежит AJAX. Напомню, ребята из Google создали большое количество AJAX приложений, таких как Gmail, Google Docs и т.п., поэтому вполне естественно, что идеи заимствовались из архитектуры AJAX.
Возможно, кто-то ещё пришёл с ещё одной отличной идеей: как было бы здорово иметь полноценную реляционную базу на мобильном устройстве! (замечу, это было примерно в 2005 году, когда мобильные телефоны были намного слабее, чем сейчас). И, как результат, они соединили две хороших идеи в один класс ContentProvider. Как это обычно и случается в разработке ПО, соединение двух хороших идей не всегда даёт в результате хорошую идею; в случае Android мы имеем несколько обескураживающий дизайн контент-провайдеров.
Класс Service и его подклассы я затрудняюсь как-то классифицировать. Я думаю, ребята из Google испытывают те же трудности (прочтите, пожалуйста, их документацию). Их классификация, в основном, говорит, чем этот класс не является. Я лично думаю, что сервис — это разновидность Model, обслуживающая несколько иные варианты использования, нежели ContentProvider.
По-моему, архитектурный дизайн Android Service навеян сервисами OSGI.
Думаю, сервисы были созданы ребятами из Google как решение логической проблемы, возникшей из-за модели потоков Android.
Подумайте над этим: Activity активно и выполняется только когда его пользовательский интерфейс находится на переднем плане. Как только интерфейс другого Activity закрывает собой текущее, последнее останавливается, даже если оно что-то делало. А что, если вам нужно выполнять некую операцию, даже если процесс, которые её выполняет, не на переднем плане? С помощью Activity вы не сможете этого сделать. Вы не сможете это сделать и с помощью ContentProvider, поскольку у них нет собственного жизненного цикла, и они могут выполняться только пока Activity, использующее его, активно.
И тут на помощь приходят сервисы. Они могут выполняться даже когда процесс, в котором они работают, не на переднем плане. Так, если вы разрабатываете активити, выполняющее растянутую во времени операцию, которая должна завершиться даже работая в фоне, вы должны создать Service, реализующий эту операцию, и запустить его из Activity.
Service так же имеет жизненный цикл. Это означает, что он может быть инстанцирован и запущен Android-приложением по некому условию (мы обсудим это позже).
Как я уже упоминал, Service, как model, приследует более общие цели, нежели ContentProvier. Он может использовать базу данных, но его API не связано с БД, как в случае ContentProvider. В большинстве случаев сервисы используются для связи с внешними серверами.
Класс BroadcastReceiver и его подклассы представляют собой «подписчика» в механизме взаимодейтсвия издатель/подписчик, реализованном в архитектуре Android.
Мы уже говорили о механизмах взаимодействия в предыдущей статье.
Конечно, разработчик под Android не ограничен одним только расширением классов из Android SDK. Он может писать собственные классы так, как захочет. Но все они будут только хелперами («helper classes») для классов из Andoird SDK.
Манифест Android
Манифест Android — ещё одна важная часть Android-приложения. Идея была навеяна манифестами плагинов для Eclipse.
Манифест Android представляет собой XML файл и выполняет несколько функций. Вот как их описывает Google:
Обратите внимание на второй пункт. Имеется ввиду, что если некий класс расширяет Activity, ContentProvider, BroadcastReceiver или Service в вашем приложении, этот класс не может быть использован до тех пор, пока он не описан в манифесте.
Ресурсы
Каждое современное GUI приложение в той или иной форме использует ресурсы. Android-приложения — не исключение. Они используют следующие типы ресурсов:
Давайте рассмотрим следующий пример. Файл с именем mybutton.png содержит картинку для кнопки. Разработчик совершает ошибку и набирает mybuton.png, ссылаясь на ресурс из кода. Как итог, код пытается использовать несуществующий ресурс, но компиляция пройдёт успешно. Ошибка может быть обнаружена только в ходе тестирования (а может и не быть обнаружена вовсе).
Ребята из Google нашли элегантное решение этой проблемы. При сборке Android-приложения генерируется специальный Java-класс с именем R (всего лишь одна буква). Этот класс содержит несколько static final наборов данных. Каждый такой набор данных — ссылка на отдельный ресурс. Эти ссылки используются в коде приложения для связи с ресурсами. Теперь каждая ошибка в ссылке на ресурсы проявляет себя в процессе компиляции.
Файлы
Android-приложение использует несколько разных типов файлов:
API для работы с файлами реализован классом Context, от которого порождены классы Activity и Service. Этот класс уже обсуждался нами здесь.
На сегодня это всё. В следующей статье мы поговорим о том, как различные части Android-приложения взаимодействуют между собой.