重复使用同一个 AsyncTask 的最佳解决方案?

Optimal solution for utilizing the same AsyncTask repeatedly?

我知道一个 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 简单得多。我不知道为什么我害怕他们。这是我使用的代码:

class CoRoutine{
suspend fun httpGet(url: String = "https://boogle.org"): String {
    val arr = ArrayList<String>()
    withContext(Dispatchers.IO) {
        val url = URL(url)

        with(url.openConnection() as HttpURLConnection) {
            requestMethod = "GET"  // optional default is GET

            //arr.add(responseCode)

            inputStream.bufferedReader().use {
                it.lines().forEach { line ->
                    //println(line)
                    arr.add(line as String)
                }
            }
        }
    }
    return arr.get(0)
}
}