【发布时间】:2020-01-11 20:02:48
【问题描述】:
我知道 AsyncTask 只能运行一次。我知道一种解决方法,但我需要一个来自 AsyncTask 的变量,它使用复杂的(?)进程。这是我调用 AsyncTask 的代码
val thr=NewTask()
thr.delegate = this
button.setOnClickListener {
thr.execute()
}
NewTask.doOnBackground() 只是将请求发送到 URL 的普通方法。 onPostExecute() 有点不同:
public override fun onPostExecute(result: String?) {
//super.onPostExecute(result)
delegate!!.processFinish(result!!)
}
委托是 AsyncResponse 的变量?这是一个包含 processFinish 抽象方法的接口,它接受一个字符串并且什么都不返回。
我的问题是,我怎样才能重复运行 AsyncTask 同时仍然得到响应?提前致谢。
【问题讨论】:
-
由于
AsyncTask可能会在大约 2 个月内被弃用,我建议您迁移到其他东西(可能是协程,因为您使用的是 Kotlin)。 -
你能推荐一些关于如何迁移到协程的资源吗?
-
我不知道有什么特别适合从
AsyncTask迁移到协程的事情,尽管我刚刚将其添加到我要写的博客文章主题列表中...... :-) 我在this book 中介绍了协程,并在this book 中有几个使用它们的示例。例如,this sample app 和 this sample app 各自使用协程实现“diceware”应用程序。 -
感谢CommonsWare!使用 Coroutines 很容易设置,一开始我很害怕,但现在代码缩短了 60 行。谢谢!
标签: android kotlin android-asynctask