Почему 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

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