回答

3

這可能不會直接回答你的問題,但你有沒有嘗試過使用Volley的NetworkImageView類?我最近在一個大型項目中使用了Volley來顯示圖像,並且比我以前見過的任何東西都更快更穩定。 Volley是Google的好人開發的Android網絡圖書館,它包含圖像下載作爲其工具箱的一部分。目前沒有官方文件,但你可以在網上找到任何數量的例子。它可以輕鬆處理小型或大型圖像。您只需將Volley庫添加到您的項目中,並用com.android.volley.toolbox.NetworkImageView替換XML佈局中的ImageView

以下變量添加到您的Activity類:

mRequestQueue = Volley.newRequestQueue(context); 
mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() { 

    private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10); 

    public void putBitmap(String url, Bitmap bitmap) { 
      mCache.put(url, bitmap); 
    } 

    public Bitmap getBitmap(String url) { 
     return mCache.get(url); 
    } 
}); 

然後下載圖像您Adapter類的getView()方法:

private RequestQueue mRequestQueue; 
private ImageLoader mImageLoader; 

onCreate()方法你Activity的創建對象:

NetworkImageView image = (NetworkImageView)view.findViewById(R.id.image); 
image.setImageUrl("http://somerandomurl.com/somerandomimage.png",mImageLoader); 

在生產代碼中,您將使用RequestQueueImageLoader類的全局實例,並且您的onCreate()方法不會像本玩具示例中那樣混亂。

我不會使用webview來顯示圖像,當然它可以做到。如果你真的想看看哪個方法「更快」,你可以嘗試使用ImageView,NetworkImageViewWebView加載一個大的圖像,並用System.nanoTime()方法獲得粗略的時間估計。

+0

好總結。我只是補充說,與ImageView相比,WebView也會使用更多的內存。 –