我有一个Android应用程序,我从多个网址中提取数据然后保存为字符串的arraylist。它工作正常,但是从13个网址获取数据,需要接近15-20秒。从使用phonegap构建的同一个app中,从同一组URL中获取数据需要3-4秒。这是下面的代码。
@Override
protected String doInBackground(String... params) {
client = new DefaultHttpClient();
for(int i=0;i<url.size();i++)
{
get = new HttpGet(url.get(i));
try {
response = client.execute(get);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
entity = response.getEntity();
InputStream is = null;
try {
is = entity.getContent();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = null;
do {
try {
line = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
buffer.append(line);
} while (line != null);
String str = buffer.toString();
param.add(str);
}
return null;
}
有人可以建议我如何加快执行速度并缩短提取时间。
答案 0 :(得分:0)
您可以尝试从for循环中为每次迭代启动一个单独的线程。 像这样的Smth:
for(int i = 0; i < url.size(); i++){
//start thread that gets data from url and adds it to the list
}