Ich verwende einen Callback -Fluss in meinem Code, um Daten aus der Firebase -Datenbank abzurufen. Hier ist mein Code < /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>
Daten werden abgerufen, aber im Haupt -Thread ausgeführt. Ich möchte es auf Hintergrund -Thread ausführen. Wie ist es möglich? Sag mir jemanden
Warum Callbackflow auf dem Haupt -Thread ausgeführt wird ⇐ Android
-
- Similar Topics
- Replies
- Views
- Last post