Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638984)
Контекстум
Электро-2024

Эффективное использование потоков в операционной системе Android (4000,00 руб.)

0   0
Первый авторЁранссон
ИздательствоМ.: ДМК Пресс
Страниц313
ID795547
АннотацияЧтобы написать действительно полезное и удобное приложение для Android, то без многопоточности никак не обойтись, но как узнать о технологиях и методиках, которые помогут решить такую задачу? Книга с практической точки зрения описывает несколько асинхронных механизмов, доступных в программной среде Android SDK, а также рассматривает основные принципы и правила выбора одного из этих них, лучше всего подходящего для создаваемого приложения. Издание предназначено для программистов разной квалификации, уже работающих под Android и желающих улучшить качество создаваемых программ.
ISBN978-5-97060-182-2
УДК004.451.9Android:004.451.2
ББК32.972.11
Ёранссон, А. Эффективное использование потоков в операционной системе Android / А. Ёранссон .— Москва : ДМК Пресс, 2018 .— 313 с. — ISBN 978-5-97060-182-2 .— URL: https://rucont.ru/efd/795547 (дата обращения: 16.06.2024)

Предпросмотр (выдержки из произведения)

Эффективное_использование_потоков_в_операционной_системе_Android.pdf
УДК 004.451.9Android:004.451.2 ББК 32.972.11 Г11 Г11 Эффективное использование потоков в операционной системе Android / пер. с англ. А. Снастина. – М.: ДМК Пресс, 2018. – 312 с.: ил. Ёранссон А. ISBN 978-5-97060-182-2 Чтобы написать действительно полезное и удобное приложение для Android, то без многопоточности никак не обойтись, но как узнать о технологиях и методиках, которые помогут решить такую задачу? Книга с практической точки зрения описывает несколько асинхронных механизмов, доступных в программной среде Android SDK, а также рассматривает основные принципы и правила выбора одного из этих них, лучше всего подходящего для создаваемого приложения. Издание предназначено для программистов разной квалификации, уже работающих под Android и желающих улучшить качество создаваемых программ. УДК 004.451.9Android:004.451.2 ББК 32.972.11 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-449-36413-7 (анг.) ISBN 978-5-97060-182-2 (рус.) Copyright © Anders Gоransson.. © Оформление, перевод, ДМК Пресс
Стр.5
Содержание Предисловие............................................................13 Глава.1..Компоненты.ОС.Android.и.необходимость.. параллельных.вычислений..........................................19 Стек программной среды ОС Android ........................................................................19 Архитектура приложения ...............................................................................................21 Приложение .................................................................................................................21 Компоненты .................................................................................................................21 Activity ..................................................................................................................22 Service ....................................................................................................................24 ContentProvider..................................................................................................24 BroadcastReceiver ..............................................................................................25 Выполнение приложения ................................................................................................25 Процесс Linux .............................................................................................................25 Жизненный цикл .......................................................................................................26 Запуск приложения ..........................................................................................26 Завершение приложения ................................................................................27 Структурирование приложений для улучшения производительности .........29 Создание отзывчивых приложений с помощью потоков ............................30 Резюме ...................................................................................................................................32 Часть.I..Основы.........................................................33 Глава.2..Многопоточность.в.Java..................................34 Основы использования потоков ...................................................................................34 Выполнение .................................................................................................................35 Приложение с одним потоком ..............................................................................37 Многопоточное приложение .................................................................................37 Увеличение потребления ресурсов .............................................................38 Повышенная сложность ..................................................................................38 Нарушение целостности данных .................................................................38 Безопасное состояние потока ........................................................................................40 Внутренняя блокировка и монитор Java ...........................................................41 Синхронизация доступа к совместно используемым ресурсам ................43 Использование внутренней блокировки ...................................................43 Явное использование механизмов блокировки ......................................45 Пример: потребитель и производитель ..............................................................46 Стратегии выполнения задачи ......................................................................................48 Проектирование параллельного выполнения .................................................49 Резюме ...................................................................................................................................50
Стр.7
Содержание  7 Глава.3..Потоки.в.ОС.Android........................................51 Потоки приложения ОС Android .................................................................................51 UI-поток ........................................................................................................................51 Связующие потоки ....................................................................................................52 Фоновые потоки .........................................................................................................53 Процесс Linux и потоки ...................................................................................................53 Планирование .............................................................................................................57 Приоритет ............................................................................................................58 Управляющие группы ......................................................................................59 Резюме ...................................................................................................................................61 Глава.4..Взаимодействие.потоков................................62 Программные каналы .......................................................................................................62 Основы использования программного канала ................................................64 Пример: обработка текста в рабочем потоке ....................................................66 Совместно используемая память..................................................................................68 Механизм сигналов ...................................................................................................69 Блокирующая очередь BlockingQueue .......................................................................71 Передача сообщений в ОС Android .............................................................................73 Пример: простая передача сообщений ...............................................................74 Классы, используемые при реализации механизма передачи сообщений ....................................................................................................................77 Класс MessageQueue .........................................................................................77 Интерфейс MessageQueue.IdleHandler ......................................................79 Пример: использование интерфейса IdleHandler для завершения ненужного потока .............................................................80 Класс Message .............................................................................................................82 Состояние «инициализировано» .................................................................84 Состояние «ожидание» ...................................................................................85 Состояние «передано» .....................................................................................85 Состояние «готово к повторному использованию» ..............................85 Класс Looper ................................................................................................................86 Завершение работы объекта Looper ............................................................87 Объект Looper в UI-потоке ............................................................................88 Класс Handler ..............................................................................................................88 Создание и настройка ......................................................................................89 Создание сообщения ........................................................................................90 Вставка сообщения в очередь ........................................................................90 Пример: передача сообщений в двух направлениях .............................92 Обработка сообщений ......................................................................................95 Удаление сообщений из очереди ..........................................................................97 Наблюдение за очередью сообщений .................................................................99 Получение текущего состояния очереди сообщений ...........................99
Стр.8
8  Содержание Отслеживание обработки очереди сообщений .....................................102 Взаимодействие с UI-потоком ....................................................................................103 Резюме .................................................................................................................................104 Глава.5..Взаимодействие.между.процессами...............105 Механизм вызова удалённых процедур в ОС Android .......................................105 Объект Binder............................................................................................................106 Язык AIDL ..........................................................................................................................108 Синхронные вызовы удалённых процедур .....................................................110 Асинхронные вызовы удалённых процедур ...................................................113 Передача сообщений с использованием объекта Binder ....................................115 Однонаправленное взаимодействие .................................................................117 Взаимодействие в двух направлениях .............................................................119 Резюме .................................................................................................................................120 Глава.6..Управление.памятью....................................121 Сборка мусора ...................................................................................................................121 Утечки памяти, связанные с использованием потоков .......................................123 Выполнение потока .................................................................................................125 Внутренние классы .........................................................................................126 Статические внутренние классы ................................................................127 Рассогласование жизненных циклов ........................................................128 Взаимодействие потоков .......................................................................................131 Отправка сообщения с данными ................................................................132 Передача сообщения с задачей ...................................................................133 Устранение утечек памяти ............................................................................................134 Использование статических внутренних классов ........................................135 Использование слабых ссылок ...........................................................................135 Остановка рабочего потока ..................................................................................136 Переключение рабочих потоков .........................................................................136 Очистка очереди сообщений ...............................................................................136 Резюме .................................................................................................................................137 Часть.II..Механизмы.асинхронного.выполнения............138 Глава.7..Управление.жизненным.циклом.простого.. потока...................................................................139 Основы использования потоков .................................................................................139 Жизненный цикл .....................................................................................................139 Прерывания ...............................................................................................................141 Неперехватываемые исключения ......................................................................143 Управление потоком .......................................................................................................145 Определение и запуск потока ..............................................................................145 Анонимный внутренний класс ...................................................................145
Стр.9
Содержание  9 Общедоступный поток ..................................................................................146 Определение потока как статического внутреннего класса .............146 Обзор возможных вариантов выбора определения потока ..............147 Сохранение потока в рабочем состоянии ........................................................147 Сохранение потока в рабочем состоянии средствами класса Activity ................................................................................................................148 Сохранение потока в рабочем состоянии средствами класса Fragment..............................................................................................................151 Резюме .................................................................................................................................153 Глава.8..HandlerThread:.механизм.очереди.. сообщений.высокого.уровня......................................155 Основы использования HandlerThread ....................................................................155 Жизненный цикл HandlerThread ...............................................................................157 Случаи использования ...................................................................................................159 Повторяющееся выполнение задачи .................................................................159 Связанные задачи ....................................................................................................160 Пример: обеспечение надёжности данных с помощью SharedPreferences .............................................................................................160 Объединение задач в цепочку .............................................................................163 Пример: сетевые вызовы в цепочке задач ...............................................163 Вставка задач по условию .....................................................................................166 Резюме .................................................................................................................................167 Глава.9..Управление.выполнением.потока.средствами.. фреймворка.Executor...............................................168 Executor ...............................................................................................................................169 Пулы потоков ....................................................................................................................171 Предопределённые пулы потоков ......................................................................172 Пулы потоков, определяемые разработчиком ...............................................173 Конфигурация ThreadPoolExecutor .........................................................173 Проектирование пула потоков ............................................................................175 Определение размера .....................................................................................175 Динамические потоки в пуле ......................................................................177 Ограниченная или неограниченная очередь задач ..............................177 Конфигурация потока ....................................................................................178 Расширение возможностей ThreadPoolExecutor .................................179 Жизненный цикл .....................................................................................................180 Корректное завершение работы пула потоков ..............................................181 Варианты использования пула потоков и возникающие при этом сложности ................................................................................................183 Предпочтение отдаётся созданию потока, а не организации очереди ................................................................................................................183
Стр.10
10  Содержание Обработка предварительно подготовленных очередей задач ..........183 Опасная ситуация при нулевом количестве базовых потоков в пуле ...................................................................................................................184 Управление задачами ......................................................................................................184 Представление задачи ............................................................................................185 Добавление задач .....................................................................................................186 Заявление отдельной задачи .......................................................................187 Метод invokeAll ................................................................................................188 Метод InvokeAny .............................................................................................190 Отвергнутые задачи ................................................................................................191 ExecutorCompletionService ...........................................................................................191 Резюме .................................................................................................................................194 Глава.10..Связывание.фоновой.задачи.с.UI-потоком.. с.помощью.AsyncTask...............................................196 Основы использования класса AsyncTask ...............................................................196 Создание и начало работы ....................................................................................199 Отмена .........................................................................................................................200 Состояния ...................................................................................................................202 Пример: ограничение режима выполнения AsyncTask только одной задачей в любой момент времени .................................................203 Реализация AsyncTask ....................................................................................................203 Пример: загрузка изображений ..........................................................................204 Выполнение задачи в фоновом режиме ...................................................................207 Глобальная среда выполнения в приложении ...............................................209 Выполнение в разных версиях платформы ....................................................211 Настраиваемое выполнение .................................................................................213 Пример: неглобальное последовательное выполнение ......................213 Альтернативы AsyncTask ...............................................................................................214 Случаи излишне упрощённой реализации AsyncTask................................215 Фоновые задачи, для которых требуется объект Looper ...........................216 Локальная служба ...................................................................................................216 Использование метода execute(Runnable) ......................................................216 Резюме .................................................................................................................................217 Глава.11..Службы....................................................218 Причины использования служб для асинхронного выполнения ...................218 Локальные, удалённые и глобальные службы .......................................................220 Создание и выполнение .................................................................................................222 Жизненный цикл .............................................................................................................223 Запускаемая служба ........................................................................................................226 Реализация метода onStartCommand ...............................................................226 Повторный запуск ...................................................................................................227 Служба, управляемая пользователем ...............................................................230
Стр.11
Содержание  11 Пример: соединение по протоколу Bluetooth ........................................230 Служба, управляемая задачей .............................................................................234 Пример: параллельная загрузка .................................................................234 Подключаемая служба ...................................................................................................237 Локальное подключение .......................................................................................239 Выбор механизма асинхронного выполнения .......................................................242 Резюме .................................................................................................................................243 Глава.12..Класс.IntentService.....................................244 Основы использования IntentService .......................................................................244 Эффективные способы использования IntentService .........................................246 Задачи, выполнение которых должно быть последовательным .............246 Пример: взаимодействие с веб-службой .................................................246 Асинхронное выполнение в BroadcastReceiver .............................................249 Пример: периодически выполняемые длительные операции..........250 Сравнение IntentService и Service ..............................................................................252 Резюме .................................................................................................................................253 Глава.13..Доступ.к.провайдерам.контента.с.помощью. AsyncQueryHandler...................................................254 Краткий обзор основ использования провайдеров контента ...........................254 Настройка ContentProvider для обработки в фоновом режиме ......................256 Использование AsyncQueryHandler..........................................................................258 Пример: список контактов с раскрывающимися элементами .................260 Как работает AsyncQueryHandler ......................................................................263 Ограничения ..............................................................................................................264 Резюме .................................................................................................................................265 Глава.14..Автоматическое.выполнение.в.фоновом.. режиме.с.помощью.загрузчиков.Loader.......................266 Фреймворк Loader ...........................................................................................................268 Класс LoaderManager .............................................................................................268 Сравнение методов initLoader() и restartLoader()...............................270 Интерфейс LoaderCallbacks .................................................................................272 Класс AsyncTaskLoader ..........................................................................................274 Надёжная загрузка данных с помощью CursorLoader ........................................275 Использование CursorLoader ..............................................................................275 Пример: список контактов ....................................................................................276 Добавление поддержки CRUD ...........................................................................277 Пример: использование CursorLoader вместе с обработчиком AsyncQueryHandler .........................................................................................278 Реализация специализированных загрузчиков .....................................................281 Жизненный цикл загрузчика ..............................................................................282 Фоновый режим загрузки .....................................................................................283
Стр.12
12  Содержание Пример: простой специализированный загрузчик ..............................284 Управление контентом ...........................................................................................286 Доставка кэшированных результатов ...............................................................287 Пример: специализированный загрузчик файлов .......................................288 Работа с несколькими загрузчиками ................................................................291 Резюме .................................................................................................................................292 Глава.15..Подведение.итогов:.выбор.механизма.. асинхронного.выполнения. .......................................294 Сохраняйте простоту ......................................................................................................295 Управление потоками и ресурсами ............................................................................296 Организация обмена сообщениями для улучшения отзывчивости ...............297 Как избежать неожиданного и нежелательного завершения задачи .............298 Простой доступ к провайдерам контента ................................................................299 Список.литературы..................................................301 Предметный.указатель.............................................304
Стр.13

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст