Blog about Android

  • Handler, Looper, MessageQueue, Message — что такое, как работают?

    Handler, Looper, MessageQueue, Message — это основа внутренней работы UI-потока Android, и этот вопрос проверяет понимание асинхронности, очередей, многопоточности. На сам вопрос довольно таки сложно ответить коротко. Это тема для большой статьи(-ей), которые есть на этом ресурсе. Здесь изложу вкратце. Компонент Назначение Looper Запускает цикл обработки сообщений (loop()) MessageQueue Хранит Message-и, которые ждут обработки Handler…

  • Что такое Nothing в Kotlin-е, зачем нужен?

    Nothing — это специальный bottom type в Kotlin. То есть: тип, у которого нет ни одного значения. Ни один объект не может быть экземпляром Nothing. Nothing — это тип, который представляет код, который никогда не завершится успешно (т.е. никогда не вернёт управление). Позволяет выразить невозможность возврата

  • 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 Контекст сервиса Службы и…

  • Чем Animation отличается от Animator-а?

    Ответ: Animation старее и проще работает чем Animator. Вот главные отличия. Animation (View Animation) Классическая система анимаций до Android 3.0 Animator (Property Animation) Появился с Android 3.0 (API 11). Более мощная система: Вот таблица различий Animation (до API 11) Animator (c API 11+, Property Animation) Что анимирует Только визуальное представление (View) Свойства объектов, не только…