跳过框架!该应用程序可能在其主线程上做太多工作



问题导致应用程序屏幕冻结。

我正在使用加载程序填充包含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无法完成,包括滚动,触摸等。

最新更新