Рубрика: Android
-
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 Как…
-
Как выгружается приложение(процесс) в Android-е?
Android не выгружает приложение вручную по finish()Он убивает процесс (process-level cleanup) по следующим причинам: Причина Что происходит Нехватка памяти Android убивает least important process Приложение в фоне долго не используется Может быть выгружено «тихо» через LMK Пользователь смахнул в Recents Android убивает task + процесс Приложение само вызвало System.exit(0) или killProcess() Принудительное завершение Force stop…
-
Что такое таск в Android-е? Как задать поведение Activity?
Task — это стэк Activity-объектов, в котором пользователь выполняет задачу.Он отображается как одно приложение в списке недавних (Overview / Recents). Task = back stack Как Activity попадает в таск? Через комбинацию: launchMode это способы запуска Activity Указывается в манифесте или через Intent-флаги. launchMode Поведение standard Каждое открытие → новая копия Activity (дефолт) singleTop Если Activity…
-
ANR в Android-е, как он появляется под капотом?
Ответ: ANR — это системная ошибка, которая возникает, когда приложение не отвечает в течение установленного времени. По умолчанию: Как это происходит внутри Android? 1. ActivityManagerService (AMS) следит за responsiveness 2. InputDispatcher отправляет событие в приложение 3. Looper main/UI thread должен быстро обработать событие 4. Watchdog следит, чтобы ответ был в срок 5. AMS создаёт ANR…
-
Context в Android-е. Какие бывают, чем отличаются?
Ответ: Context — это объект-среда, который предоставляет доступ к: По сути — это «точка входа» к API Android, привязанная к жизненному циклу. Основные виды Context в Android Вид Описание Где используется ApplicationContext Живёт всё время жизни процесса Работа с синглтонами, фоновыми задачами Activity Контекст, привязанный к Activity UI-операции, startActivity(), Inflate Service Контекст сервиса Службы и…