我使用Anko和Kotlin在我的应用程序中执行一个长时间运行的后台任务(大约3-5秒)。
fun send_data() {
doAsync {
try {
//long running task
uiThread {
val intent = Intent(this.weakRef.get(), ResultActivity::class.java) startActivity(intent)
}
} catch (e: Exception) {
e.printStackTrace();
Log.d(TAG, e.localizedMessage, e);
uiThread {
snackbar(base_view, "Error while initializing:${e.localizedMessage}", "Retry", { _ -> send_data() })
}
}
}
在此期间,用户可以执行许多操作,这些操作将导致我的活动被重新创建,现在我可以使用
this.weakRef
查看它是否为null,但如果它确实为null,是否有方法等待活动重新创建后再继续?
现在我要做的是检查weakRef是否为null,如果是,我发布一个新的
handler
在200ms内再次运行,每200ms运行一次,直到
weakRef
不再为空