Что такое Kotlin Coroutines, чем они отличаются от живых данных - PullRequest
0 голосов
/ 10 июля 2019

Я начинаю работать с новыми вещами, разработанными сообществом разработчиков Android, одним из них является Coroutines .Я использовал LiveData, и я предположил, что при их использовании они также безопасны для жизненного цикла, тогда почему сопрограммы вводятся и чем они отличаются от LiveData.Я видел видео на Coroutines на Youtube, с канала разработчика, но не совсем понимаю.Как Suspend и Resume работают лучше, чем LiveData.

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Хорошо, во-первых, сопрограммы на самом деле не слишком сильно связаны с LiveData, хотя они могут кое-где поделиться некоторыми понятиями. Сопрограммы используются для выполнения асинхронной операции: получение данных из сети, базы данных и т. Д. Сопрограммы могут использоваться в качестве «LiveData», если вы говорите в контексте каналов или потоков. С сопрограммами вы можете легко переключаться на темы.

Suspend функции - это просто функции, которые работают и не работают напрямую. Любая функция приостановки должна быть внутри сопрограммы.

Простейший вариант использования, который я могу вам дать, это:

runBlocking{
 //you are inside of a coroutine
 val data = getDataFromBackground()
}

suspend fun getDataFromBackground(): SomeDataType = receiveSomeData()

Метод receiveSomeData также помечается ключевым словом suspend.

Но, конечно, есть гораздо больше. Документация - отличный способ начать .

У меня также есть личная статья о сопрограммах, вы можете найти их там легко.

Есть только один момент, о котором я могу подумать, что вы можете заменить данные сопрограммами, и это использование каналов. Представление не будет наблюдаться для LiveData, но будет потреблять значения, поступающие из канала, созданные и совместно используемые с DI или чем-то еще.

0 голосов
/ 10 июля 2019

Сопрограммы для асинхронной работы. Активные данные используются для обновления вашего представления (активность и фрагмент)

...