我正在使用以下类(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 类返回一个"响应"字符串。
我想知道的是,因为我还没有找到很多这样的例子,那么什么是更优雅的方法,以及其他更有经验的编码人员将如何做到这一点。
非常感谢您抽出宝贵时间回答。
as my AsyncTask class returns a single "response" string.
=> 这不是真的。因为AsyncTask也可以返回ArrayList,而不是一个字符串。
您应该检查 AsyncTask 的泛型类型