2017-06-21 80 views
0

我想在图像尚未加载时显示加载图标,并在图像准备就绪时隐藏加载图标。我使用的壁画库,我用下面的代码成功地实现我想要的东西:壁画ControllerBuilder CPU使用率

private void loadImage(ImageView imageview,final ImageView videoicon, final GifTextView progressbar, Uri uri,final boolean video,final boolean child,boolean isConnectivity) 
    { 
     if (child) 
     { 
      if (isConnectivity) 
      progressbar.setBackgroundResource(Theme.Icons.LoadingChild); 
     } 
     else 
     { 
      progressbar.setBackgroundResource(Theme.Icons.LoadingMain); 
     } 
     SimpleDraweeView imageDrawee = (SimpleDraweeView) imageview; 

     ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() { 
      @Override 
      public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable anim) { 
       if (imageInfo == null) { 
        return; 
       } 
       progressbar.setVisibility(View.GONE); 
       if (video) 
       { 
        if (child) 
        { 
         videoicon.setImageResource(Theme.Icons.MediaGalleryVideoIcon); 
        } 
        else 
        { 
         linearlayout_mediagalleryvideoicon.setVisibility(View.VISIBLE); 
         videoicon.setImageResource(Theme.Icons.MediaGalleryVideoIcon); 
        } 
       } 
      } 

      @Override 
      public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) { 
       //FLog.d("Intermediate image received"); 
      } 

      @Override 
      public void onFailure(String id, Throwable throwable) { 
       //FLog.e(getClass(), throwable, "Error loading %s", id) 
      } 
     }; 


     DraweeController controller = Fresco.newDraweeControllerBuilder() 
       .setControllerListener(controllerListener) 
       .setOldController(imageDrawee.getController()) 
       .setUri(uri) 
       .build(); 
     imageDrawee.setController(controller); 
    } 

我的问题是,当我关闭片段,我可以从Android监视器看到DraweeController继续使用CPU。当我打开包含一个图像的20-30片段时,我的应用程序因CPU负载过重而崩溃。

如何克服这个问题?

回答

0

问题不在于Fresco库,而在于我用来显示GIF图像的库。