2017-09-20 2 views
1

Zunächst einmal habe ich dieses Problem in einigen Threads hier gelesen und ich weiß, dass könnte beheben die getActivity() mit dem Anwendungskontext ersetzen. All diese Antworten stammen von einigen Jahren, und jetzt denke ich, dass dies den Anwendungskontext nicht unterstützt, weil ich einen Fehler bekomme, wenn ich den Anwendungskontext einlege und in den Methoden der Bibliothek keine Methode finde, die ich einsetzen kann Anwendungskontext.ServiceConnectionLeaked mit youtube api

Wenn ich Tye erstellen YoutubeStandalonePlayer ich das tue:

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

wenn ich versuche, die app Kontext ich einen Fehler zu setzen, weil ich eine App Zusammenhang bin vorbei und die Aktivität nicht, das ist die Eigenschaft, auf die die Methode wartet.

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

Dann ist meine Frage ... wie kann ich das Problem der ServiceConnectionLeaked mit dem YouTubeStandalonePlayer beheben:

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

Vielen Dank im Voraus

Antwort

3

diese Lösung Versuchen Sie, die ich gefunden habe, in Diese Website (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/)

Sie müssen diese Zeile hinzufügen, um die ServiceConnectionLeaked mit youtube API zu vermeiden.

youTubeThumbnailLoader.release(); 

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