在我的應用我下載圖像,我從一個URL獲得。這裏的問題是需要太長時間。圖像被壓縮,只有9公里大。我正在下載其中的50個,所以我們假設應用正在下載500kByte的圖片。這應該是相當快的,對吧?呃,事實並非如此。我有時候會持續20秒,直到它被加載。在那裏花了很長時間?我有一個非常簡單的方法來下載圖像。這是加速圖像下載時間
int downloadingImages = getDownloadImageCount();
System.out.println(downloadingImages);
if(downloadingImages == 0){
for(int c = downloadingImages; c < 50; c++){
try{
bitmapArr[c] = getBitmapFromURL(imageURLArr[c]);
setDownloadImageCount(50);
publishProgress(c);
} catch (FileNotFoundException f1){
Log.v("FileNotFoundException", "Bitmap konnte nicht geladen werden");
} catch(NullPointerException e){
} catch (IllegalStateException ie){
}
setDownloadImageCount(50);
}
}
這是getBitmapFromUrl功能
public static Bitmap getBitmapFromURL(String src) throws FileNotFoundException {
try {
//Downloading the image
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
try{
//Saving the image to a bitmap and return it
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
//Catch Exception if file not found
} catch(FileNotFoundException ffe){
Log.v("FileNotFoundException", "getBitmapFromURLMethod");
return null;
}
//Catch Exception if error at input and output
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
我的意思是,什麼是這麼長時間呢?我怎樣才能提高速度。稍後我會對圖像使用cahing,但仍然...我的意思是500kbs,需要很長時間。這是爲什麼?
不要試圖重新發明輪子:http://square.github.io/picasso/ – Budius
將一個時間戳長上幾行。這可以告訴你什麼花了太長時間。連接服務器也是一個耗時的過程。因此,確保連接建立需要時間或下載。 –
您也可以使用通用的圖像加載器:https://github.com/nostra13/Android-Universal-Image-Loader –