Custom Tabs позволяют отображать в приложении веб контент с синхронизацией Cookies, паролей, истории поиска из браузера. Причём открытие ссылки в Custom Tab происходит быстрее чем в отдельном приложении.
В Chrome 88 Custiom Tab теперь по умолчанию будет добавлять действие шаринга («поделиться»). Чтобы изменить это поведение вам надо использовать библиотеку androidx.browser 1.3.0 и новое API Share State.
Объяснение почему делать тесты производительность на dev сборка делать не стоит и как режим работы debuggable приложений отличается от релизных приложений. Результаты тестов вы можете увидеть в таблице.
runBlocking - самый простой Coroutine Builder, который не заставляет использовать CoroutineScope и подружить синхронный мир с асинхронным.
Вызов кода runBlocking(Dispatchers.Main) { ... } на UI потоке в Android приведет к deadlock вашего приложения. И это полностью ожидаемое поведение. В статье автор делает подробный разбор как происходит работа этого кода.
В Dagger 2.31 появился ViewModelComponent и соответствующий Scope. Для того чтобы переиспользовать сущности за пределами жизни Activity у нас существует теперь 2 scope: @ViewModelScoped и @ActivityRetainedScoped
В прямом эфире переведём приложение из Android в Kotlin Multiplatform для поддержки Android и iOS одновременно.
Эксперт -Анна Жаркова, Mobile Lead Developer/Usetech Разработчик с опытом более 7, пишет нативно под IOS (Swift/Objective-C), Android (Kotlin/Java) и кросс-платформу. Интересуется Kotlin Multiplatform. Помимо этого преподаёт в Otus на курсах по iOS. В свободное время изучает немецкий и китайский языки, увлекается живописью
Всем привет. Решил обратиться к сообществу за помощью. Порой возникают задачки, на которые тратится много времени. Буду очень признателен, если кто-то отзовётся, чтобы помочь в 👉 Делать таймкоды для выпусков подкаста 👉 Разработка сайта 👉 Бот в Telegram 👉 Публикация анонсов в соц. сетях
Со своей стороны я могу предложить свою помощь в рамках моих компетенций. Пишите Кириллу @krlrozov, чтобы откликнуться.
Руководство по созданию собственных Entry Point в Dagger Hilt. Полезно если вам нужно отвязать компоненты от жизненного цикла компонентов Android: Application, Activity, Fragment, View, Service, BroadcastReceiver
Разбор построения архитектуры Model — View — Intent (MVI) на основе Coroutines. В статье разбирается: 👉 Основы MVI 👉 Разница StateFlow, SharedFlow, Channel 👉Пример реализации простого приложения
Если нужно проанализировать производительность, то в первую очередь надо взять замеры. В этом нам поможет Profiler, который встроен в Androdi Studio.
В статье/видео приводятся доказательства, что не всегда он показывает верные результаты. Решением служит использование Systrace или Jetpack Benchmark Library.