2017-09-20 3 views
1

Tout d'abord, j'ai lu ce problème dans certains threads ici et je sais que cela pourrait être correctif en remplaçant le getActivity() avec le contexte de l'application. Toutes ces réponses datent de quelques années, et maintenant je pense que cela ne supporte pas le contexte de l'application, parce que j'obtiens une erreur quand je mets le contexte de l'application et dans les méthodes de la bibliothèque je ne trouve aucune méthode pour mettre le contexte de l'application.ServiceConnectionLeaked avec youtube api

Quand je crée Tye YoutubeStandalonePlayer Je fais ceci:

Intent intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), getResources().getString(google_maps_key), mPublication.getYoutubeCode()); 

si je tente de mettre le contexte d'application que je reçois une erreur parce que je passe un contexte d'application et non l'activité, qui est le propriété que la méthode attend.

Intent intent = YouTubeStandalonePlayer.createVideoIntent(ApplicationConfig.getAppContext(), getResources().getString(google_maps_key), mPublication.getYoutubeCode()); 

Alors, ma question est ... comment puis-je résoudre le problème de ServiceConnectionLeaked à l'aide du YouTubeStandalonePlayer:

android.app.ServiceConnectionLeaked: Activity com.buzinger.loycus.activity.HomeActivity has leaked ServiceConnection [email protected] that was originally bound here 

Merci à l'avance

Répondre

3

Essayez cette solution que j'ai trouvé dans ce site Web (https://androidadagnitio.wordpress.com/2017/03/09/activity-has-leaked-serviceconnection-com-google-android-youtube-player-internal-re391c339-that-was-originally-bound-here-error-solution/)

Vous devez ajouter cette ligne pour éviter le ServiceConnectionLeaked avec youtube api.

youTubeThumbnailLoader.release(); 

Tout le code:

@Override 
    public void onBindViewHolder(final VideoInfoHolder holder,final int position) { 

     holder.youTubeThumbnailView.initialize(DEVELOPER_KEY, new YouTubeThumbnailView.OnInitializedListener() { 
      @Override 
      public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, final YouTubeThumbnailLoader youTubeThumbnailLoader) { 

       youTubeThumbnailLoader.setVideo(videos.get(position)); 
      //here is the magic to solve the logcat error 
       youTubeThumbnailLoader.setOnThumbnailLoadedListener(new YouTubeThumbnailLoader.OnThumbnailLoadedListener() { 
        @Override 
        public void onThumbnailLoaded(YouTubeThumbnailView youTubeThumbnailView, String s) { 
         youTubeThumbnailView.setVisibility(View.VISIBLE); 
         holder.relativeLayoutOverYouTubeThumbnailView.setVisibility(View.VISIBLE); 
         youTubeThumbnailLoader.release(); 
        } 

        @Override 
        public void onThumbnailError(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader.ErrorReason errorReason) { 

        } 
       }); 
      } 

      @Override 
      public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) { 
       //write something for failure 
      } 
     }); 
    }