2017-06-21 2 views
0

J'essaie d'afficher une icône de chargement lorsque l'image n'a pas encore été chargée et de masquer l'icône de chargement lorsque l'image est prête. J'utilise la bibliothèque Fresco et je le code ci-dessous pour mettre en œuvre avec succès ce que je veux:Utilisation du processeur Fresco ControllerBuilder

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); 
    } 

Mon problème est que quand je ferme le Fragment, je peux voir dans le Moniteur Android que le DraweeController continuer à utiliser CPU. Lorsque j'ouvre 20-30 Fragment contenant une image, mon application se bloque en raison de la charge du processeur.

Comment surmonter ce problème?

Répondre

0

Le problème n'était pas avec la bibliothèque Fresco, mais avec la bibliothèque que j'avais l'habitude d'afficher des images de GIF.