问题是导致应用程序屏幕冻结了一点。
我正在使用加载器来填充包含imageView和textView的listView。
当加载器解析JSON并将图像URL提取到对象以及标题时,填充listView开始。
我在代码中搜索了一些可能导致跳帧的问题,当我将图片填充到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();
}
答案 0 :(得分:0)
您违反了一系列Android规则和指南。
1)99.99%的时间,您不需要修改ThreadPolicy。所以除非你确切知道它的作用,否则请不要这样做 2)永远不要在UI线程上进行API调用。这就是应用程序冻结的原因。
您需要进行异步调用,获取图像数据,然后将其加载到ImageView中。
有很多图书馆可以为您做这件事,并顺利处理一切。尝试谷歌搜索" Glide"," Universal Image Loader"," Picasso"。
目前,您正在加载图像时锁定正在处理UI更新的线程。因此,在加载图像时,可以使用UI完成NOTHING,包括滚动,触摸等。