Android 如何从“返回多个响应”;“doInBackground”;

Android 如何从“返回多个响应”;“doInBackground”;,android,kotlin,Android,Kotlin,我有这段代码,可以从已经准备好的URL中检索数据并将其显示在我的MPAndroid图表中,但我想添加另一行,其中包含从另一个URL检索的数据: inner class WeatherTaskTempLine : AsyncTask<String, Void, String>() { override fun onPreExecute() { super.onPreExecute() } override fun doInBackground(v

我有这段代码,可以从已经准备好的URL中检索数据并将其显示在我的MPAndroid图表中,但我想添加另一行,其中包含从另一个URL检索的数据:

inner class WeatherTaskTempLine : AsyncTask<String, Void, String>() {
    override fun onPreExecute() {
        super.onPreExecute()
    }
    override fun doInBackground(vararg params: String?): String? {
        var response:String?
        try{

            val tempData = uriToday.build().toString()
            response = URL(tempData).readText(
                    Charsets.UTF_8
            )

        }catch (e: Exception){
            response = null
        }
        return response
    }
    override fun onPostExecute(result: String?) {
        super.onPostExecute(result)
        try {
            val yVals = ArrayList<Entry>()
            val xVals = ArrayList<Entry>()
            /* Extracting JSON returns from the API */
            val jsonTemperatureData = JSONArray(result)
            for (i in 0 until jsonTemperatureData.length()) {
                val item = jsonTemperatureData.getJSONObject(i)
                val reading_temperature = item.getString("reading_temperature")
                val hour = item.getString("hour")
                yVals.add(Entry(hour.toFloat(), reading_temperature.toFloat(), i.toString()))
                //xVals.add(Entry(hour.toFloat(), reading_humidity.toFloat(), i.toString()))
            }
            val set1: LineDataSet
            set1 = LineDataSet(yVals, "Temperatura")
            val set2: LineDataSet
            set2 = LineDataSet(xVals, "Temperatura jucer")

            val dataSets = ArrayList<ILineDataSet>()
            dataSets.add(set1)
            dataSets.add(set2)
            val data = LineData(dataSets)
            chart1.setData(data)
        } catch (e: Exception) {
        }
    }
}
但我也想通过考试

   val tempData = uriArchive.build().toString()
            response = URL(tempData).readText(
                    Charsets.UTF_8
            )
因此,我可以在另一个循环中迭代该数据,如下图所示,并在我的MPAndroidChart中设置另一行:

  for (i in 0 until jsonTemperatureData.length()) {
  }

如果这不是一种正确的方法,那会是什么

您可以从AsyncTask类返回除字符串以外的其他数据类型

例如,可以返回字符串的ArrayList

inner class WeatherTaskTempLine : AsyncTask<String, Void, ArrayList<String>>() {
内部类WeatherTaskTempLine:AsyncTask(){
这将允许您从
doInBackground


注意:您需要调整
onPostExecute
中的结果对象类型以及
doInBackground
返回类型。

id强烈建议您在声明AsyncTask时,了解为什么要使用这些泛型类型,因为它们在哪里使用。由于它们是泛型的,您可以使用它们将每个类放在这3个位置
inner class WeatherTaskTempLine : AsyncTask<String, Void, ArrayList<String>>() {