如何在循环中放入一个asynctask

时间:2015-12-04 14:22:59

标签: android android-asynctask

实际上我想要做的是在具有不同值的循环内运行asynctask。因此,一旦当前运行的asynctask结束 - 它将再次使用另一个值启动asynctask,它将继续直到循环结束。

这里,第一个asynctask需要在被调用时立即启动,而下一个asynctask在前一个asynctask完成之前不会启动。

代码如下:

Myasync mAsync = new Myasync();

for(int i=0; i<5 ; i++)
{
  mAsync.execute(i);
}

怎么做? : - )

1 个答案:

答案 0 :(得分:2)

我在你的doInBackgroundMethod中建议这样的东西:

protected ArrayList<String> doInBackground(String... urls) {
    ArrayList<String> result = new ArrayList<>();
    for(int i = 0; i< urls.length; i++){
        try {
            URL url = new URL(urls[i]);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            try {
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    stringBuilder.append(line).append("\n");
                }
                bufferedReader.close();
                result.add(stringBuilder.toString());
            } finally {
                urlConnection.disconnect();
            }

        } catch (Exception e) {
            Log.e("ERROR", e.getMessage(), e);
            result.add(null);
        }
    }
    return result;
}

注意String... urls参数