Хорошо, во-первых, сопрограммы на самом деле не слишком сильно связаны с LiveData
, хотя они могут кое-где поделиться некоторыми понятиями.
Сопрограммы используются для выполнения асинхронной операции: получение данных из сети, базы данных и т. Д.
Сопрограммы могут использоваться в качестве «LiveData», если вы говорите в контексте каналов или потоков. С сопрограммами вы можете легко переключаться на темы.
Suspend
функции - это просто функции, которые работают и не работают напрямую. Любая функция приостановки должна быть внутри сопрограммы.
Простейший вариант использования, который я могу вам дать, это:
runBlocking{
//you are inside of a coroutine
val data = getDataFromBackground()
}
suspend fun getDataFromBackground(): SomeDataType = receiveSomeData()
Метод receiveSomeData
также помечается ключевым словом suspend
.
Но, конечно, есть гораздо больше. Документация - отличный способ начать .
У меня также есть личная статья о сопрограммах, вы можете найти их там легко.
Есть только один момент, о котором я могу подумать, что вы можете заменить данные сопрограммами, и это использование каналов. Представление не будет наблюдаться для LiveData
, но будет потреблять значения, поступающие из канала, созданные и совместно используемые с DI или чем-то еще.