Android图片视图让app变慢

时间:2015-04-09 09:56:17

标签: android listview android-asynctask imageview android-anr-dialog

在我的应用程序中,我有一个列表视图,其中包含一个图像视图。图像从bas64编码的字符串加载。首先对字符串进行解码,然后将其转换为位图,然后将位图加载到图像视图中。 所有解码都在异步任务中完成,并根据以下文档处理并发性。

Processing Bitmaps Off the UI Thread

问题是应用程序滚动缓慢,之后所有其他异步任务都没有执行。

任何可能的解决方案?

3 个答案:

答案 0 :(得分:1)

你可能会将一个巨大的Bitmap变成一个小ImageView,就像假设图像是FHD 1920x1280而你的ImageView是192x128一样。您应该将较小或相同尺寸Bitmap加载到ImageView。我想这是滚动滞后的原因。也可能是您的布局太复杂而且应该进行优化 至于

  

之后

异步任务没有执行

没有看到你的代码,没有人可以告诉你任何事情。

答案 1 :(得分:1)

如果要从服务器获取图像URL,则可以在本地数据库中存储。不要将base64存储在数据库中,只需存储图像URL。但是,对于图像加载,您只需使用GlidePicasso等可用的库进行图像加载。当你正在进行像解码base64和加载那个位图这样繁重的操作时,你的列表视图是滞后的。试一试,它会起作用。您可以使用单行代码加载图像,如

ImageView imageView = (ImageView) findViewById(R.id.my_image_view);

Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);

答案 2 :(得分:1)

您可能需要将图像放入文件夹“drawable-nodpi”,因为normaly android app会首先尝试调整大图像,然后加载它,然后显示显示原始图像(通过再次调整大小),此过程将花费很多CPU让你的应用程序响应缓慢。所以只需创建一个“drawable-nodpi”文件夹作为“drawable”文件夹,剪切/粘贴新文件夹中的所有大图像