在我的应用程序中,我有一个列表视图,其中包含一个图像视图。图像从bas64编码的字符串加载。首先对字符串进行解码,然后将其转换为位图,然后将位图加载到图像视图中。 所有解码都在异步任务中完成,并根据以下文档处理并发性。
Processing Bitmaps Off the UI Thread
问题是应用程序滚动缓慢,之后所有其他异步任务都没有执行。
任何可能的解决方案?
答案 0 :(得分:1)
你可能会将一个巨大的Bitmap
变成一个小ImageView
,就像假设图像是FHD 1920x1280而你的ImageView
是192x128一样。您应该将较小或相同尺寸Bitmap
加载到ImageView
。我想这是滚动滞后的原因。也可能是您的布局太复杂而且应该进行优化
至于
没有看到你的代码,没有人可以告诉你任何事情。之后
异步任务没有执行
答案 1 :(得分:1)
如果要从服务器获取图像URL,则可以在本地数据库中存储。不要将base64存储在数据库中,只需存储图像URL。但是,对于图像加载,您只需使用Glide或Picasso等可用的库进行图像加载。当你正在进行像解码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”文件夹,剪切/粘贴新文件夹中的所有大图像