URL url = new URL(myurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
int response = conn.getResponseCode();
Log.d("1", "The response is: " + response);
in = new BufferedInputStream(conn.getInputStream());
out = new FileOutputStream(file);
int bufferLength = 0;
byte[] buffer = new byte[1024];
while ((bufferLength = in.read(buffer)) > 0) {
out.write(buffer, 0, bufferLength);
}
我下载了小xml文件,然后解析它并从该文件创建对象。
文件大小3,8 kB。但下载开始后需要几秒钟才能显示一些数据。 当我解析已经下载的文件没有互联网连接时,它需要不到一秒钟来显示数据。 由此我得出结论,问题在于这种方法。 PS我忘了说,之后它正在下载一些小的缩略图。
我已经测量了时间
@Override
protected ArrayList<?> parseData(File dataFile) {
// TODO Auto-generated method stub
long startTime = System.currentTimeMillis();
ArrayList<Training> list = new ArrayList<Training>();
MyParser parser = new MyParser();
MyFileDownloader downloader = new MyFileDownloader();
try {
list = parser.parseTrainings(dataFile);
boolean networkAvaible = fragment.isNetworkAvailable();
for (int i = 0; i < list.size(); i++) {
if (networkAvaible)
downloader.downloadFile(list.get(i).getImageURL(), new File(fragment.getDataFolder(), "image"+i));
String path = fragment.getDataFolder().getPath() + "/image"+i;
Drawable im = Drawable.createFromPath(path);
list.get(i).setImage(im);
}
} catch (XPathExpressionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
Log.d("******TIME PASSED******", String.valueOf(elapsedTime));
return list;
当有互联网连接时,我需要下载大约9-11秒的文件。 当不需要下载它们时,大约需要0.5秒。如何减少下载此文件的时间? 文件大小总和为5236 Mbits。使用我的20Mbps Wi-Fi应该下载不到1秒。一两秒钟就可以了。但是9秒甚至16秒?这是糟糕的用户体验。
答案 0 :(得分:0)
尝试使用asynctask下载文件。这是一个很好的例子,请参考。
http://www.androidhive.info/2012/04/android-downloading-file-by-showing-progress-bar/