跳帧!应用程序可能在其主线程

时间:2017-12-02 12:47:07

标签: android bitmap updates loader

问题是导致应用程序屏幕冻结了一点。

我正在使用加载器来填充包含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();
   }

1 个答案:

答案 0 :(得分:0)

哦,天哪,天哪,天啊,天啊,天啊,天啊请。否。

您违反了一系列Android规则和指南。

1)99.99%的时间,您不需要修改ThreadPolicy。所以除非你确切知道它的作用,否则请不要这样做 2)永远不要在UI线程上进行API调用。这就是应用程序冻结的原因。

您需要进行异步调用,获取图像数据,然后将其加载到ImageView中。

有很多图书馆可以为您做这件事,并顺利处理一切。尝试谷歌搜索" Glide"," Universal Image Loader"," Picasso"。

目前,您正在加载图像时锁定正在处理UI更新的线程。因此,在加载图像时,可以使用UI完成NOTHING,包括滚动,触摸等。