Программирование на Kotlin для Android

Программирование на Kotlin для Android

Программирование на Kotlin для Android
Автор: Данн Майк, Лоранс Пьер-Оливье, Мик Дж. Блейк, Хинчман-Домингес Аманда
Дата выхода: 2024
Издательство: БХВ-Петербург
Количество страниц: 338
Размер файла: 8,4 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

Содержание....6

Об авторах....12

Предисловие....14

Кому адресована эта книга....15

Почему мы написали эту книгу....16

Как организована эта книга....16

Условные обозначения и соглашения....17

Примеры кода....18

Благодарности....18

ГЛАВА 1. Основы языка Kotlin....20

Система типов Kotlin....21

Примитивные типы....21

Null-безопасность....22

Тип Unit....24

Функциональные типы....25

Обобщенные типы....26

Переменные и функции....26

Переменные....27

Лямбда-выражения....27

Функции-расширения....28

Классы....30

Инициализация класса....30

Свойства....32

Модификатор lateinit....33

Свойства с отложенной инициализацией....35

Делегаты....36

Объекты-компаньоны....37

Классы данных....38

Классы перечислений....39

Запечатанные классы....41

Модификаторы видимости....42

Резюме....43

ГЛАВА 2. Фреймворк коллекций Kotlin....46

Основные понятия....46

Совместимость с Java....47

Изменяемость....47

Перегруженные операторы....49

Создание контейнеров....50

Функциональное программирование....51

Сравнение функционального и процедурного программирования: простой пример....51

Функциональное программирование в Android....52

Функции-преобразователи....53

Булевы функции....53

Фильтры....54

Функция тар....54

Функция flatMap....56

Группировка....57

Сравнение итераторов и последовательностей....58

Пример....60

Проблема....60

Реализация....61

Резюме....67

ГЛАВА 3. Основы Android....68

Стек Android....68

Аппаратное обеспечение....68

Ядро....69

Системные службы....69

Среда выполнения Android....70

Приложения....70

Прикладное окружение Android....70

Намерения и фильтры намерений....71

Контекст....74

Компоненты приложения Android: строительные блоки....76

Компонент Activity и его друзья....77

Службы....81

Провайдеры контента....86

BroadcastReceiver....87

Архитектуры приложений Android....89

MVC: основы....89

Виджеты....90

Локальная модель....90

Паттерны Android....91

Model-View-Intent....91

Model-View-Presenter....91

Model-View-ViewModel....92

Резюме....93

ГЛАВА 4. Параллельное программирование в Android....95

Потокобезопасность....96

Атомарность....96

Видимость....97

Модель многопоточного выполнения Android....98

Пропуск кадров....99

Утечка памяти....102

Инструменты для управления потоками....104

Looper/Handler....105

Исполнители Executors и объекты ExecutorService....107

Инструменты для управления заданиями....108

JobScheduler....110

WorkManager....112

Резюме....113

ГЛАВА 5. Потокобезопасность....114

Пример проблемы, связанной с потокобезопасностью....114

Инварианты....116

Мьютексы....117

Потокобезопасные коллекции....117

Привязка к потоку....120

Конфликт потоков....121

Сравнение блокирующего и неблокирующего вызовов....122

Очереди работ....123

Противодавление....124

Резюме....126

ГЛАВА 6. Организация параллелизма с использованием обратных вызовов....128

Пример: функция обработки покупок....129

Создание приложения....131

Компонент ViewModel....131

Представление....132

Реализация логики....136

Обсуждение....137

Ограничения модели многопоточного выполнения....139

Резюме....140

ГЛАВА 7. Сопрограммы....142

Что такое сопрограмма?....142

Наша первая сопрограмма....143

Функция async....145

Краткий обзор структурированного параллелизма....147

Связь "родитель — потомок" в структурированном параллелизме....149

CoroutineScope и CoroutineContext....151

Функции, поддерживающие возможность приостановки....156

Функции, поддерживающие возможность приостановки, ’’под капотом”....157

Использование сопрограмм и функций, поддерживающих возможность приостановки: практический пример....161

Не ошибитесь с модификатором suspend....164

Резюме....165

ГЛАВА 8. Структурированный параллелизм и сопрограммы....167

Функции, поддерживающие возможность приостановки....167

Настройка места действия....168

Традиционный подход с использованием java.util.concurrent.ExecutorService....169

Вспомним, что такое HandlerThread....173

Использование приостанавливаемых функций и сопрограмм....176

Сравнение приостанавливаемых и традиционной многопоточности: итоги....180

Отмена....180

Жизненный цикл сопрограмм....181

Отмена сопрограммы....183

Отмена задачи, делегированной сторонней библиотеке....185

Сопрограммы, которые действуют согласованно, чтобы их можно было отменить....189

Функцию delay() можно отменить....191

Обработка отмены....192

Причины отмены....193

Супервизия....196

Функция supervisorScope....198

Параллельная декомпозиция....198

Автоматическая отмена....200

Обработка исключений....200

Необработанные и открытые исключения....200

Открытые исключения....202

Необработанные исключения....205

Резюме....208

Размышления напоследок....209

ГЛАВА 9. Каналы....210

Обзор каналов....210

Рандеву-канал....212

Неограниченный канал....216

Объединенный канал....217

Буферизованный канал....218

Функция produce....219

Взаимодействующие последовательные процессы....220

Модель и архитектура....220

Первая реализация....221

Выражение select....226

Собираем все воедино....228

Мультиплексор и демультиплексор....229

Проверка производительности....230

Противодавление....232

Сходства с моделью акторов....233

Последовательное выполнение внутри процесса....233

Размышления напоследок....234

Взаимоблокировки в CSP....234

Каналы и взаимоблокировки....237

Ограничения каналов....237

«Горячие» каналы....239

Резюме....240

ГЛАВА 10. Потоки....242

Введение в потоки....242

Более реалистичный пример....243

Операторы....245

Терминальные операторы....246

Примеры использования холодного потока....247

Вариант 1: интерфейс с API на базе функции обратного вызова....247

Вариант 2: параллельное преобразование потока значений....252

Вариант 3: создание собственного оператора....254

Обработка ошибок....258

Блок try/catch....258

Разделение ответственности важно....261

Нарушение прозрачности исключения....261

Оператор catch....262

Материализация исключений....265

Горячие потоки и SharedFlow....268

Создаем Shared Flow....269

Регистрируем подписчика....269

Отправляем значения в SharedFlow....270

Использование SharedFlow для потоковой передачи данных....270

Использование SharedFlow в качестве шины событий....276

StateFlow. специализированная версия SharedFlow....277

Пример использования StateFlow....278

Резюме....280

ГЛАВА 11. Вопросы производительности и инструменты профилирования Android....281

Android Profiler....283

Network Profiler....286

CPU Profiler....292

Energy Profiler....302

Memory Profiler....304

Обнаружение утечек памяти с помощью LeakCanary....309

Резюме....313

ГЛАВА 12. Снижение потребления ресурсов за счет оптимизации производительности....315

Достижение плоской иерархии представлений с помощью ConstraintLayout....316

Сокращение количества операций рисования с помощью экземпляров класса Drawable....320

Минимизация данных в сетевых вызовах....325

Организация пула и кэширование объектов Bitmap....325

Избавляемся от ненужной работы....327

Использование статических функций....330

Минификация и обфускация с R8 и ProGuard....330

Резюме....332

Предметный указатель....334

Книга посвящена разработке мобильных приложений для Android на языке Kotlin. Рассмотрены основные структуры и элементы языка, подробно описан фреймворк коллекций Kotlin. Показана архитектура операционной системы Android, приложений и их контейнеров,  изучаются основы параллельного программирования. Рассказано о потокобезопасности, работе с параллелизмом с использованием обратных вызовов. Отдельная глава посвящена специальным конструкциям Kotlin — сопрограммам, с акцентом на структурированный параллелизм. Рассматриваются каналы, использование потоков для асинхронной обработки данных. Изучаются вопросы повышения производительности приложений с использованием инструментов профилирования Android и снижения потребления ресурсов за счет оптимизации производительности.

Для программистов

Разработка мобильных приложений для Android может показаться сложной задачей, особенно если для этого требуется изучить новый язык программирования. Речь идет о Kotlin, ставшем официальным языком разработки для этой операционной системы. Книга поможет быстро освоить этот язык, обладающий целым рядом технологических преимуществ, а также перейти с Java на Kotlin.

Авторы приводят реализацию наиболее распространенных задач в нативной разработке для Android и показывают, как Kotlin помогает решить проблему параллелизма. Делая акцент на структурированном параллелизме, новой парадигме асинхронного программирования, книга помогает освоить одну из самых мощных конструкций Kotlin — сопрограммы.



Похожее:

Список отзывов:

Нет отзывов к книге.