Почему Callbackflow работает в главном потокеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему Callbackflow работает в главном потоке

Сообщение Anonymous »

Я использую поток обратного вызова в своем коде для извлечения данных из базы данных Firebase. Вот мой код < /p>
@ExperimentalCoroutinesApi
suspend fun getUserOrder() = callbackFlow{
println("Current Thread name is ${Thread.currentThread().name}")
databaseReference.child("Order").addValueEventListener(object : ValueEventListener{
override fun onCancelled(error: DatabaseError) {
Log.d("database error ",error.message)
channel.close(error.toException())
}

override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()){
snapshot.children.forEach { data ->
data.children.forEach {newData->
newData.children.forEach { childData->
val userOrder = UserOrder(
childData.key!!,
childData.child("item_name").value as String,
childData.child("item_price").value as String,
childData.child("item_quantity").value as String,
childData.child("item_weight").value as String
)
offer(userOrder)
}
}
}
channel.close()
}
}
})
awaitClose()
}

//Activity class code
viewModel.viewModelScope.launch {
val time = measureTimeMillis {
viewModel.getOrder().collect {
println("Item id is ${it.item_id}")
}
}
println("Total time taken is $time")
}
< /code>
Данные получают, но они работают в основном потоке. Я хочу запустить его в фоновой ветке. Как это возможно?. Скажи мне, чтобы все

Подробнее здесь: https://stackoverflow.com/questions/626 ... ain-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»