Когда мы начинаем изучать корутины, то «идём» и пробуем что-то простое с билдером runBlocking, поэтому многим он хорошо знаком. runBlocking запускает новую корутину, блокирует текущий поток и ждёт, пока выполнится блок кода — кажется, всё просто и понятно. Но что, если я скажу, что в runBlocking есть одна любопытная вещь, которая может заблокировать не только текущий поток, а вообще всё ваше приложение навсегда? И это не ошибка.
Понимаю, что заголовок кликбейтный, но именно это произошло со мной. В @RuStore написал некий "владелец формата файла", показал "лицензию" у себя на сайте, где написано, что только он может читать файлы такого формата, а другие должны просить его разрешения. Этого хватило, чтобы заблокировать мне приложение, в котором чтение этого формата - лишь малая часть функционала. Подробнее
Статья рассказывает об использовании Android Components ViewModel, LifeCycle и LiveData. Эти компоненты позволяют не заботиться о жизненном цикле Activity. Так же рассмотрен пример применения современного Coroutines в связке с репозитарием на Retrofit fun main(args: Array<String>): Unit = runBlocking { // Wait (suspend) for Result val result:…
Департамент контрразведывательной защиты интересов государства в сфере информационной безопасности СБУ обратился к Интернет-ассоциации Украины с письмом, в котором просит заблокировать сайты, которые размещают информацию, которая пропагандирует войну, национальную вражду,