我一直在浏览各种Asynctask教程和示例,但我仍然有点困惑。如果我想发出3个Web请求并返回其响应 像:
//示例
String[] response = new String[3];
response[0] = webrequest("http://www.google.com"); //simple HTTP GET request
response[1] = webrequest("http://www.bing.com"); //simple HTTP GET request
response[2] = webrequest("http://www.aj.com"); //simple HTTP GET request
//sample results from request
response[0] = "blah";
response[1] = "arg";
response[2] = "meh";
要使用AsyncTask执行此操作,我是否需要实现3个不同的AT?我应该使用其他东西吗?
String[] response = new String[3];
webCreate sample = new webCreate();
try{
response[0] = sample.execute("http://www.google.com").get().toString();
response[1] = sample.execute("http://www.google.com").get().toString();
response[2] = sample.execute("http://www.google.com").get().toString();
}
catch (Exception sampleMsg)
{}
public class webCreate extends AsyncTask<String, String, String> {
}
protected String doInBackground(String... params) {
// String url=params[0];
String webRequestResponse = null; //the
// web request
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
return reponse;
}
我知道我可以使用.get()来访问响应数据,但是我的“异步”会变成“同步”lol。我觉得我应该使用AsyncTask以外的东西,但我不知道那是什么。请帮忙。
答案 0 :(得分:0)
您的方法没问题,从您的AsyncTask doInBackground
调用启动Web请求并等待. get()
结果的函数。由于这个事实,那个请求是不是在mainUi上运行并阻塞它,我认为没有问题。