Использование и оптимизация шаблона асинхронных задач в операционной системе Android
Анализ вопроса выполнения асинхронных задач, позволяющий инициировать исполнение в главном потоке в операционных системах (взаимодействия с пользователем), предназначенных для работы на устройствах с ограниченными возможностями, таких как телефоны.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 23.03.2018 |
Размер файла | 103,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Использование и оптимизация шаблона асинхронных задач в операционной системе Android
Дроздов Артем Андреевич,
соискатель Национального исследовательского Томского политехнического университета
В операционных системах, предназначенных для работы на устройствах с ограниченными возможностями, таких как мобильные телефоны, одной из частых потребностей является выполнение асинхронных задач. Проблема в том, что такие операционные системы зачастую имеют важную архитектурную особенность - взаимодействие с пользователями происходит в рамках одного выделенного потока исполнения. В связи с этим представляется нежелательным выполнение сравнительно длительных операций в синхронном режиме, так как это напрямую отражается на пользователе невозможностью взаимодействия с интерфейсом приложения. Для преодоления данной сложности используется шаблон асинхронных задач, позволяющий инициировать исполнение в главном потоке (потоке взаимодействия с пользователем), выполнить его вдругом и, опционально, получить результат выполнения в главный поток.
Операционная система Android содержит в себе встроенный механизм работы с асинхронными задачами, называемый AsyncTask [1, с.237].Фактически он представляет собой паттерн проектирования, называемый шаблонный метод. Для его использования необходимо создать класс-наследник и определить в нем метод doInBackground, в рамках которого будет выполнена длительная операция. Дополнительно можно переопределить методы onPreExecute и onPostExecute. Первый служит для того, чтобы произвести инициализацию данных, необходимых для выполнения основной операции. Данная инициализация производится в главном потоке. Второй метод позволяет передать результат выполнения операции в главный поток. Совокупность этих методов позволяет определить семантически самостоятельную единицу кода - задачу.
У этого подхода присутствует один недостаток: невозможно контролировать число одновременно выполняемых операций. Согласно исходному коду операционной системы Android можно увидеть, что в рамках одного приложения может одновременно выполнятся до 128 одновременных операций. Еще 10 задач при этом могут находиться в очереди. В случае превышения этого числа, будет выброшено исключение, которое, скорее всего, приведет к завершению приложения с ошибкой. Помимо вероятности аварийного завершения существует также проблема с отзывчивостью пользовательского интерфейса. Дело в том, что каждый запускаемый поток обладает тем же приоритетом исполнения, что и главный. Таким образом, если одновременно выполняется 10 потоков, то главный поток будет работать в 10 раз медленнее (в случае одноядерной архитектуры процессора). Еще одной характерной особенностью такого подхода является увеличенный расход оперативной памяти, являющейся наиболее дефицитным ресурсом для платформы Android. Очевидно, что выполнение задачи требует определенного расхода памяти. Соответственно, при параллельном исполнении задач расход памяти суммируется, что при невозможности управления количеством одновременно выполняемых задач ведет к практически неустранимой ошибке OutOfMemoryError.
Рис. 1. Схема шаблонного метода.
Для разрешения указанных проблем в высоконагруженных системах часто используется очередь задач и определенное число потоков, исполняющих эти задачи [2, с.490]. В рамках операционной системы Android использование этого подхода без модификации не является оправданным, т.к. большинство задач необходимо исполнять частично в отдельном потоке, для обеспечения отзывчивости пользовательского интерфейса во время длительных операций, частично в главном потоке - для отображения результатов пользователю. Чтобы обеспечить такое поведение предлагается следующий шаблонный метод, схема которого изображена на рисунке 1.
В виде псевдокода данный метод можно представить следующим образом: асинхронный операционный аndroid
class Task{
//Хэндлер для передачи обработки в главный поток
static Handler handler = new Handler(Looper.getMainLooper().getThread());
void run(){
try {
async();
handler.post(() -> { ok(); });
} catch (Throwable t) {
handler.post(() -> { error(t); });
} finally {
handler.post(() ->{ end(); });
}
}
void async();
void ok();
void error(Throwable t);
void end();
}
Дореализация необходимых методов в классах-наследниках позволяет гибко определять сложное поведение задач, с учетом особенностей операционной системы Android.
Для непосредственного выполнения задач рекомендуется использовать класс ThreadPoolExecutor с неограниченной очередью задач. Возможно использование различных ThreadPoolExutor'ов с целью более тонкой настройки распределения нагрузки.
Такая система позволяет полностью обойти указанные ограничения для асинхронных задач, распределяя пиковую нагрузку во времени благодаря очереди с одной стороны, и обеспечивая отзывчивость пользовательского интерфейса благодаря возможности тонкой настройки числа одновременно выполняемых потоков.
Литература
1. Голощапов А. Google Android: программирование для мобильных устройств. -- СПб.: БХВ-Петербург, 2010. -- 448 с.
2. Кей Хорстманн . Java 2. Библиотека профессионала. Том 2. Тонкости программирования / Кей Хорстманн, Гари Корнелл -- М.: Вильямс, 2010 г. - 992 с.
3. П. Дейтел. Android для программистов. Создаем приложения / П. Дейтел, Х. Дейтел, Э. Дейтел, М. Морган - СПб.: Питер, 2012г. - 691 c.
Размещено на Allbest.ru
...Подобные документы
Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.
курсовая работа [1,0 M], добавлен 15.11.2012Изучение общих понятий операционной системы Android, разработанной для коммуникаторов, планшетных компьютеров, основанной на ядре Linux. Разработка программного обеспечения Android. Преимущества и недостатки мобильной операционной системы Windows Mobile.
реферат [60,6 K], добавлен 16.04.2012Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.
дипломная работа [2,6 M], добавлен 10.07.2017Архитектура операционной системы Android. Инструменты Android-разработчика. Установка Java Development Kit, Eclipse IDE, Android SDK. Настройка Android Development Tools. Разработка программы для работы с документами и для осуществления оперативной связи.
курсовая работа [2,0 M], добавлен 19.10.2014Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.
дипломная работа [2,1 M], добавлен 18.01.2016Особенности сотовой сети. Использование функции телефонии DTMF Callback на устройствах с Android. Обзор рынка VoIP связи и услуги международного роуминга. Проведение тестирования рабочего прототипа приложения с функцией телефонии DTMF Callback.
дипломная работа [1,3 M], добавлен 08.02.2017Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.
курсовая работа [167,8 K], добавлен 18.01.2017Обзор особенностей операционной платформы для мобильных телефонов, смартфонов и коммуникаторов. История обновлений и модифицированные версии. Прошивка устройств. Приборы на платформе Android. Изучение основных достоинств операционной системы Android 4.2.
реферат [885,8 K], добавлен 19.10.2015Взаимодействие процессов и потоков в операционной системе, основные алгоритмы и механизмы синхронизации. Разработка школьного курса по изучению процессов в операционной системе Windows для 10-11 классов. Методические рекомендации по курсу для учителей.
дипломная работа [3,2 M], добавлен 29.06.2012Основные понятия об операционных системах. Виды современных операционных систем. История развития операционных систем семейства Windows. Характеристики операционных систем семейства Windows. Новые функциональные возможности операционной системы Windows 7.
курсовая работа [60,1 K], добавлен 18.02.2012Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.
дипломная работа [2,7 M], добавлен 03.04.2015Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.
дипломная работа [1,2 M], добавлен 04.02.2016Использование офисного пакета Microsoft Project для управления проектами. Связь задач с помощью зависимостей, определяющих порядок выполнения задач относительно друг друга. Разбиение проекта на фазы. Представление плана работ с помощью диаграммы Ганта.
контрольная работа [40,4 K], добавлен 22.03.2012Управление памятью в операционной системе Linux. Физическая и виртуальная память. Исполнение и загрузка пользовательских программ, файловая система. Передача данных между процессами. Структура сети в операционной системе. Развитие и использование Linux.
презентация [1,4 M], добавлен 24.01.2014Описание основных математических методов обработки эмпирических данных. Регрессионный метод и анализ ковариаций Ancova. Организация операционной системы, среды программирования на Android. Программная реализация метода 1МНК в среде С++ под Android.
дипломная работа [4,2 M], добавлен 23.03.2017Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.
курсовая работа [2,6 M], добавлен 15.06.2013Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.
дипломная работа [1,0 M], добавлен 11.07.2014Характерна особливість ігрових задач. Основні види ігрових задач: з повною та неповною інформацією. Методи знаходження планів гри і оптимальних стратегій для таких ігор, як шахи, шашки, "хрестики-нулики". Способи побудови систем штучного інтелекту.
контрольная работа [588,5 K], добавлен 22.01.2015История создания и развития операционной системы Microsoft Windows. Особенности каждой из ее версий. Новшества в интерфейсе, встроенных программах, системе управления и использования ОС, увеличение скорости выполнения приложений возможностями мультимедиа.
реферат [29,5 K], добавлен 30.11.2013