Справка
x
Поиск
Закладки
Озвучить книгу
Изменить режим чтения
Изменить размер шрифта
Оглавление
Для озвучивания и цитирования книги перейдите в режим постраничного просмотра.
Эффективное использование потоков в операционной системе Android
Часть II. Механизмы асинхронного выполнения
Предыдущая страница
Следующая страница
Table of contents
Предисловие
Глава 1. Компоненты ОС Android и необходимость параллельных вычислений
+
Часть I. Основы
+
Часть II. Механизмы асинхронного выполнения
-
Глава 7. Управление жизненным циклом простого потока
Основы использования потоков
Жизненный цикл
Прерывания
Неперехватываемые исключения
Управление потоком
Определение и запуск потока
Сохранение потока в рабочем состоянии
Резюме
Анонимный внутренний класс
Общедоступный поток
Определение потока как статического внутреннего класса
Обзор возможных вариантов выбора определения потока
Сохранение потока в рабочем состоянии средствами класса Activity
Сохранение потока в рабочем состоянии средствами класса Fragment
Глава 8. HandlerThread: механизм очереди сообщений высокого уровня
Основы использования HandlerThread
Жизненный цикл HandlerThread
Случаи использования
Повторяющееся выполнение задачи
Связанные задачи
Объединение задач в цепочку
Вставка задач по условию
Резюме
Пример: обеспечение надёжности данных с помощью SharedPreferences
Пример: сетевые вызовы в цепочке задач
Глава 9. Управление выполнением потока средствами фреймворка Executor
Executor
Пулы потоков
Предопределённые пулы потоков
Пулы потоков, определяемые разработчиком
Проектирование пула потоков
Жизненный цикл
Корректное завершение работы пула потоков
Варианты использования пула потоков и возникающие при этом сложности
Управление задачами
Представление задачи
Добавление задач
Отвергнутые задачи
ExecutorCompletionService
Резюме
Конфигурация ThreadPoolExecutor
Определение размера
Динамические потоки в пуле
Ограниченная или неограниченная очередь задач
Конфигурация потока
Расширение возможностей ThreadPoolExecutor
Предпочтение отдаётся созданию потока, а не организации очереди
Обработка предварительно подготовленных очередей задач
Опасная ситуация при нулевом количестве базовых потоков в пуле
Заявление отдельной задачи
Метод invokeAll
Метод InvokeAny
Глава 10. Связывание фоновой задачи с UI-потоком с помощью AsyncTask
Основы использования класса AsyncTask
Создание и начало работы
Отмена
Состояния
Реализация AsyncTask
Пример: загрузка изображений
Выполнение задачи в фоновом режиме
Глобальная среда выполнения в приложении
Выполнение в разных версиях платформы
Настраиваемое выполнение
Альтернативы AsyncTask
Случаи излишне упрощённой реализации AsyncTask
Фоновые задачи, для которых требуется объект Looper
Локальная служба
Использование метода execute(Runnable)
Резюме
Пример: ограничение режима выполнения AsyncTask только одной задачей в любой момент времени
Пример: неглобальное последовательное выполнение
Глава 11. Службы
Причины использования служб для асинхронного выполнения
Локальные, удалённые и глобальные службы
Создание и выполнение
Жизненный цикл
Запускаемая служба
Реализация метода onStartCommand
Повторный запуск
Служба, управляемая пользователем
Служба, управляемая задачей
Подключаемая служба
Локальное подключение
Выбор механизма асинхронного выполнения
Резюме
Пример: соединение по протоколу Bluetooth
Пример: параллельная загрузка
Глава 12. Класс IntentService
Основы использования IntentService
Эффективные способы использования IntentService
Задачи, выполнение которых должно быть последовательным
Асинхронное выполнение в BroadcastReceiver
Сравнение IntentService и Service
Резюме
Пример: взаимодействие с веб-службой
Пример: периодически выполняемые длительные операции
Глава 13. Доступ к провайдерам контента с помощью AsyncQueryHandler
Краткий обзор основ использования провайдеров контента
Настройка ContentProvider для обработки в фоновом режиме
Использование AsyncQueryHandler
Пример: список контактов с раскрывающимися элементами
Как работает AsyncQueryHandler
Ограничения
Резюме
Глава 14. Автоматическое выполнение в фоновом режиме с помощью загрузчиков Loader
Фреймворк Loader
Класс LoaderManager
Интерфейс LoaderCallbacks
Класс AsyncTaskLoader
Надёжная загрузка данных с помощью CursorLoader
Использование CursorLoader
Пример: список контактов
Добавление поддержки CRUD
Реализация специализированных загрузчиков
Жизненный цикл загрузчика
Фоновый режим загрузки
Управление контентом
Доставка кэшированных результатов
Пример: специализированный загрузчик файлов
Работа с несколькими загрузчиками
Резюме
Сравнение методов initLoader() и restartLoader()
Пример: использование CursorLoader вместе с обработчиком AsyncQueryHandler
Пример: простой специализированный загрузчик
Глава 15. Подведение итогов: выбор механизма асинхронного выполнения
Сохраняйте простоту
Управление потоками и ресурсами
Организация обмена сообщениями для улучшения отзывчивости
Как избежать неожиданного и нежелательного завершения задачи
Простой доступ к провайдерам контента
Список литературы
Предметный указатель
Данный блок поддерживает скрол*