回答

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也会使用更多的内存。 –