Android 性能:使用Webview而不是ImageView显示图像

Android 性能:使用Webview而不是ImageView显示图像,android,webview,Android,Webview,在我的Android活动中,我想显示大约10张来自web的图像。通常,我必须创建10个ImageView来显示每个图像,但是ImageView可能会导致内存不足异常。所以我决定使用10WebView来显示图像。效果很好 但是我不知道WebView的性能如何,有谁能告诉我10个WebView的性能如何,我可以使用这种方法显示图像吗?您是否同时显示10个图像 如果是,图像视图的大小必须相对较小,因此可以使用图像的小版本并避免内存不足错误(或下载实际大小,但在内存中创建小版本) 如果没有,您应该使用L

在我的Android
活动中
,我想显示大约10张来自web的图像。通常,我必须创建10个
ImageView
来显示每个图像,但是
ImageView
可能会导致
内存不足异常。所以我决定使用10
WebView
来显示图像。效果很好


但是我不知道
WebView
的性能如何,有谁能告诉我10个
WebView
的性能如何,我可以使用这种方法显示图像吗?

您是否同时显示10个图像

如果是,图像视图的大小必须相对较小,因此可以使用图像的小版本并避免内存不足错误(或下载实际大小,但在内存中创建小版本)

如果没有,您应该使用ListView、GridView、ViewPager或循环使用视图的东西。您在同一时间只在内存中获取其中的两个,并避免内存不足错误


此外,还有很好的库来显示下载和显示图像,例如,Universal Image Loader将在后台执行所有操作,将图像大小调整到所需大小,您可以激活内存缓存/磁盘缓存等。

WebView在内存中比Image view占据更多空间。仅仅通过显示图像无法在webView中实现适当的缩放。Webview可以更快地将图像弹出到Ui,但这不是一种有效的方式

你可以试试Volly,它有内置的图像下载、缓存和缩放工具,我可以保证它的速度也很快

您需要做的就是将Volley库添加到项目中,并将XML布局中的ImageView替换为com.android.Volley.toolbox.NetworkImageView

将以下变量添加到活动类:

private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
Create the objects in the onCreate() method of your 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);
    }
});
在生产代码中,您将使用RequestQueue和ImageLoader类的全局实例,并且您的onCreate()方法不会像本示例中那样混乱


我不会使用webview来显示图像,当然这是可以做到的。如果你真的想知道哪种方法“更快”,你可以试用ImageView、NetworkImageView和WebView来加载一个大图像,并使用System.nanoTime()方法获得大致的时间估计。

但我不知道WebView的性能如何。你试过了。所以你可以告诉我们
谁能告诉我10个网络视图的性能如何
。同样的<代码>我可以使用此方法显示图像吗?
?我刚听到你说它工作得很好。ImageView不会导致
OOM
,而是你放在里面的位图会导致它
NetworkImageView image = (NetworkImageView)view.findViewById(R.id.image);
image.setImageUrl("http://someurl.com/someimage.png",mImageLoader);