Ich verwende Google Room, um Persistenz von Daten in meiner Android-App zu implementieren (Kotlin-Code). Room fordert alle Vorgänge (Abfragen an und von der Datenbank) asynchron an. Ich möchte, dass der Benutzer darauf wartet, dass der Vorgang ausgeführt wird, sodass er nicht mit Komponenten interagieren kann, die vor dem Ende der Abfrage nicht ordnungsgemäß konfiguriert wurden. Wie kann ich dies erreichen, da ich von einer asynchronen Aufgabe nicht auf den UI-Thread zugreifen kann?So zeigen Sie den Fortschritt von asynchronen Aufgaben an, die von Google Room verwendet werden
PS: Ich mache auch einige Aufrufe an eine API, wo der Fortschritt/Lade-Indikator wäre schön zu haben. Ich verwende RxJava bei diesen Anrufen, aber ich bin ziemlich neu in dieser Technologie, und ich bin mir nicht sicher, wie ich es richtig strukturieren soll.
Beispiel einer db Betrieb:
private fun getDataFromCache() {
//show progress indicator here
execute({
try {
//Get items from cache
val entities = daoData.findAll()
if (entities.isNotEmpty()) {
//do something
} else {
//do something else
}
}
catch (e: Exception){
Log.e("error", e.toString())
}
finally{
//dismiss progress indicator here
}
})
}
Prost Kumpel, wir haben einen ähnlichen Ansatz verfolgt! –