Основные способы синхронизации переменной область: многопоточность, конкурентный доступ мьютексы (mutex): блокируют доступ и предотвращают гонки семафоры: задают предельное число одновременных обращений атомарные…
Отличия <? extends T> от <? super T> обобщённые типы в Java значения из такого контейнера можно безопасно читать, но добавление запрещено объекты типа T можно безопасно добавлять, а при чтении типом результата будет…
Flow и LiveData: различия и перенос логики Flow — асинхронный реактивный поток из Kotlin Coroutines, который поддерживает операторы преобразования и не привязан к UI LiveData — компонент Android Jetpack с поддержкой…
Получение атрибута PrimaryColor через ApplicationContext и ActivityContext Контексты Android: ApplicationContext является глобальным, а ActivityContext относится к конкретному UI-экрану ApplicationContext не позволяет…
В каких случаях использовать WorkManager, а в каких — Service? WorkManager выбирают для отложенных и гарантированно выполняемых задач, которые должны завершиться даже после перезагрузки устройства WorkManager умеет…
Когда в Kotlin выбирать data class, а когда обычный класс? data class предназначен для хранения данных и автоматически получает equals(), hashCode(), toString(), copy() и компоненты Его выбирают, если важны…
Когда выбирать Int32 или Int64? (различия целочисленных типов в языках программирования) Тип Int обычно обозначает целое число фиксированного размера, например Int32 или Int64. Определяющими факторами служат…
По умолчанию Android-приложение выполняется в одном процессе однако для компонентов (Service, Activity, ContentProvider) можно задать атрибут android:process компоненты, для которых указаны разные process, будут…
StateFlow без подписчиков: как он работает StateFlow в Kotlin — горячий поток для хранения и управления состоянием Может работать при наличии 0 подписчиков и не выдаёт ошибок Текущее состояние постоянно сохраняется в…
В Kotlin data class предназначен для хранения данных Прямое наследование data class запрещено Наследоваться можно от обычных классов, но не от другого data class Вместо этого применяют composition (композицию)…
Жизненный цикл Activity и вызов onDestroy без onStop Жизненный цикл Activity — это последовательность методов от её создания до уничтожения Основные состояния представлены цепочкой: onCreate → onStart → onResume →…