【发布时间】:2017-10-09 11:23:31
【问题描述】:
我是 Kotlin 和协程的新手。但是我想用它来初始化 Android ThreeTen backport library,这是一个长期运行的任务。我正在使用 Metalab Async/Await 库 (co.metalab.asyncawait:asyncawait:1.0.0)。
这是我的代码:
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()
}
}
现在我遇到初始化 UI 时库未初始化的问题。据我了解,在调用 AndroidThreeTen.init 之前不应调用 initUI。
【问题讨论】:
-
您应该先加载 UI,然后再加载数据(或在后台更早):stackoverflow.com/a/43151714/882912 否则,您在加载数据时会冻结 UI。这样你就可以显示一个进度条。
标签: android kotlin async-await kotlin-coroutines