Ich bin neu in Kotlin und die Coroutines. Ich möchte es jedoch verwenden, um die Android ThreeTen Backport-Bibliothek zu initialisieren, die eine lang andauernde Aufgabe ist. Ich verwende die Metalab Async/Await Library (co.metalab.asyncawait:asyncawait:1.0.0).Async nicht warten auf erwarten
Dies ist mein Code:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val application = this
async {
//non-blocking initialize ThreeTen
await { AndroidThreeTen.init(application) }
//initialize UI on UI thread which uses the ThreeTen library
initUI()
}
}
Jetzt habe ich das Problem, dass die Bibliothek nicht initialisiert wird, wenn der Benutzeroberfläche initialisiert. Aus meiner Sicht sollte initUI
nicht aufgerufen werden, bevor aufgerufen wird.
Sie die Benutzeroberfläche geladen werden sollte zuerst dann Daten zweite (oder früher im Hintergrund): http://stackoverflow.com/a/43151714/882912 Andernfalls Sie frieren Ihre Benutzeroberfläche ein, während Sie die Daten laden. Auf diese Weise können Sie einen Fortschrittsbalken anzeigen. – KTCO