问题导致应用程序屏幕冻结。
我正在使用加载程序填充包含imageView和textView的listView。
加载器解析JSON并将图像URL提取到对象和标题以及标题中时,填充listView开始。
我在代码内进行了一些搜索,这可能导致跳过帧的问题,当我填充图片以列表lagg时,我发现了。
因此,我将发布用于将图片呈现给应用的代码,如果有人可以告诉我它是否可以更好,为什么我的代码实际上不好?
ImageView album = (ImageView) listItemView.findViewById(R.id.albumID);
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(currentSong.getImage_url()).getContent());
album.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
哦,上帝哦,上帝哦,上帝哦,上帝不。请。否。
您将违反一堆Android规则和准则。
1)99.99%的时间,您无需修改螺纹电池。因此,除非您确切知道它的作用,否则请不要做。
2)永远不要在UI线程上拨打API。这就是应用程序冻结的原因。
您需要进行异步调用,获取图像数据,然后将其加载到ImageView。
有很多图书馆可以为您做到这一点,并顺利处理所有内容。尝试谷歌搜索"滑行","通用图像加载器","毕加索"。
当前,您正在锁定正在加载图像时正在处理UI更新的线程。因此,当图像加载时,UI无法完成,包括滚动,触摸等。