Примитивы синхронизации: synchronized, Atomic, семафоры synchronized блокирует метод или отдельный блок кода и обеспечивает взаимное исключение (mutex). Примитив удобен, однако при неправильном применении может…
Основные проблемы перехвата Intent через BroadcastReceiver Конкуренция за Intent: один Intent могут одновременно обрабатывать несколько приёмников, а порядок их работы сложно контролировать Безопасность: без проверки…
Риски Dispatchers.Unconfined и сценарий падения Dispatchers.Unconfined — специальный диспетчер корутин, который начинает выполнение в текущем потоке и работает в нём до первой приостановки. Сразу другой поток он не…
Какие типы в Compose считаются стабильными и почему List нестабилен? Stable (стабильный) тип — это тип, состояние которого не изменяется без явного уведомления Compose К таким типам обычно относят примитивы, data…
Intent служит контейнером для обмена данными между компонентами Android Поддерживаются примитивные типы: int, long, float, double, boolean, char Можно передавать строки и массивы примитивных типов Допускаются объекты,…
Основные способы синхронизации переменной область: многопоточность, конкурентный доступ мьютексы (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() и компоненты Его выбирают, если важны…