1

我正在使用以下类(AsyncTask)从 8 个不同的 URL 中检索信息。我想将检索到的数据存储到一个由 8 个元素组成的数组中(一个用于我从中获取数据的每个 URL)。

 private class getDataClass extends AsyncTask<String, Void, String>{
    protected String doInBackground(String...urls){
        String response = "";
        for(String url : urls){
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try{
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(new InputStreamReader(content));

                String s = "";

                while((s = buffer.readLine()) != null){
                    response += s;
                }
            }catch(Exception e){
                e.printStackTrace();
            } 
        }
        return response;
    }

    protected void onPostExecute(String result){
        Resources.descriptionArray[descriptionArray_Counter] = Html.fromHtml(result).toString();
        descriptionArray_Counter++;
    }

并这样称呼它:

   getDataClass getData = new getDataClass();
   getData.execute(description_links);

我显然遇到的问题是所有信息都存储在数组 [0] 中,因为我的 AsyncTask 类返回单个“响应”字符串。

我想知道什么,因为我没有找到很多这样的例子,什么是更优雅的方式来做到这一点,以及其他更有经验的编码人员将如何解决这个问题。

非常感谢您花时间回答。

4

1 回答 1

1
 as my AsyncTask class returns a single "response" string.

=> 这不是真的。因为 AsyncTask 也可以返回 ArrayList 而不仅仅是一个字符串。

您应该检查AsyncTask 的通用类型

于 2012-04-06T12:24:09.850 回答