Рубрика: Android
-
Что такое Coroutine Context?
CoroutineContext — это набор объектов, определяющих поведение корутины. Он лежит в основе работы всех корутин и определяет: Структура CoroutineContext «Под капотом» CoroutineContext — это интерфейс, реализующий нечто вроде иммутабельного Map<Key, Element>. Он устроен как цепочка Element-ов. Каждый Element — это одна часть контекста: Все они реализуют CoroutineContext.Element, и каждый имеет свой Key
-
Зачем нужен Job? Что такое SupervisorJob?
Job — это объект—дескриптор для корутины, который управляет её жизненным циклом. Job производная от CoroutineContext, которую мы вставлять в CoroutineScope. Job позволяет: Для лучшего запоминания суть работы Job-а, можно сравнить с номером заказа в ресторане. По не нему можно проверить, готов ли заказ, можно отменить или получить заказ. Все дочерние Job автоматически привязываются к родителю.…
-
Что такое CoroutineScope? Какие виды знаешь?
CoroutineScope — это контекст выполнения корутин, объединяющая их в одну иерархию. То есть сущность, в которой происходит Структурированная асинхронность. Для легкости понимания её можно сравнить с Android Activity: наши асинхронные вызовы будут выполнятся в рамках CoroutineScope, так же как наши вьюшки(Textview, Button, LieneаrLayout и др.) существуют в рамках одной Activity. Если CoroutineScope отменяется(закрывается), то все…
-
Как Coroutine работают внутри, чем отличаются от потоков?
Основная идея в том, что Coroutine это НЕ(!) про многопоточность, а про асинхронность. А если быть точнее, то про Структурированную асинхроннсть. То есть мы можем выполнять код на одном потоке(даже на MainThread-e) и получать результат не блокируя поток(т.е. Асинхронно) и в том порядке(т.е. Структурированно), который описан наш асинхронный блок кода.
-
Sequence в Kotlin-е. Зачем нужны, как работают?
Sequence в Kotlin — это инструмент ленивой (lazy) обработки коллекций. Sequence — это ленивая коллекция: элементы вычисляются по мере запроса, а не все сразу. Как работает? Зачем использовать Sequence? Проблема обычных коллекций Решение через Sequence map().filter().take() создают новые списки на каждый шаг Sequence делает это лениво — один проход Большой объём данных → много аллокаций…
-
Расскажи про структуру manifest файла, что в нем обязательно прописывать?
Что обязательно в манифесте? Элемент Обязательно? Зачем нужен <manifest> Да Корневой элемент, содержит package xmlns:android Да Пространство имён для атрибутов android: <application> Да Определяет само приложение (иконка, тема, компоненты и т.д.) <activity> Только если ты запускаешь UI, иначе опционально <uses-sdk> Но очень желательно (иначе значения по умолчанию: minSdk = 1!) Что ещё можно указать? Элемент…
-
Handler, Looper, MessageQueue, Message — что такое, как работают?
Handler, Looper, MessageQueue, Message — это основа внутренней работы UI-потока Android, и этот вопрос проверяет понимание асинхронности, очередей, многопоточности. На сам вопрос довольно таки сложно ответить коротко. Это тема для большой статьи(-ей), которые есть на этом ресурсе. Здесь изложу вкратце. Компонент Назначение Looper Запускает цикл обработки сообщений (loop()) MessageQueue Хранит Message-и, которые ждут обработки Handler…
-
IPC. Межпроцессное взаимодействие, AIDL
IPC (Inter-Process Communication) — это способ, с помощью которого два разных процесса обмениваются данными.Это критично, потому что: Примеры IPC в Android Где используется Пример Системные сервисы LocationManager, NotificationManager Между приложениями Приложение <=> Сервис другого приложения AIDL-сервисы Платёжные SDK, медиа-сервисы Binder Основной механизм передачи данных Механизм: Android Binder Вся IPC в Android работает через Binder —…
-
Что такое apk и что в него входит
APK (Android Package) — это обычный архив в формате ZIP, содержащий всё необходимое для установки Android-приложения на устройство: Структура .apk файла Вот что обычно входит в APK: app.apk├── AndroidManifest.xml├── classes.dex├── lib/│ └── armeabi-v7a/libnative.so├── res/│ └── drawable/…├── assets/│ └── raw_data.json├── resources.arsc├── META-INF/│ ├── CERT.RSA│ ├── CERT.SF│ └── MANIFEST.MF Подробности по каждому элементу Файл / Каталог Назначение…
-
Отличия ART от Dalvik
Что такое Dalvik и ART? Dalvik ART (Android Runtime) Использовался До Android 4.4 (по умолчанию) С Android 5.0+ (Lollipop) Тип Интерпретатор + JIT AOT-компилятор + JIT (новый) Цель Выполнять .dex-байткод Тоже .dex, но быстрее и эффективнее Ключевые отличия 1. Компиляция: JIT vs AOT Dalvik ART JIT (Just-In-Time) Только JIT JIT, но в сочетании с AOT…
-
Приоритетность процессов в андроиде
Android даёт каждому процессу приоритет: Приоритет Кто Убивается в последнюю очередь Foreground UI, активные Activity/Service В последнюю очередь Visible View partially visible В последнюю очередь Service Фоновый Service В последнюю очередь Cached / Empty Задние Activity, idle процессы В первую очередь
-
WorkManager — зачем нужен и как используется?
Ответ: WorkManager — это API для выполнения фоновых задач, которые: Когда использовать WorkManager? Сценарий Использовать WorkManager? Синхронизация данных в фоновом режиме Да Отправка логов / статистики ночью Да Загрузка медиафайлов только по Wi-Fi Да One-time задача при следующем запуске Да Точное выполнение в конкретное время Лучше AlarmManager Реальное время (медиа, шагомер и т.п.) ForegroundService Как…