2017-09-20 6 views
1

まず、私はここでいくつかのスレッドでこの問題を読んできましたが、getActivity()をアプリケーションコンテキストに置き換えて修正できることがわかっています。この答えは数年前からのものですが、今はアプリケーションコンテキストをサポートしていないと思います。なぜなら、アプリケーションコンテキストを置くとエラーが発生し、ライブラリのメソッドには何も見つかりません。アプリケーションコンテキスト。私はこれをやっているYoutubeStandalonePlayer TYEを作成するとyoutube apiでServiceConnectionLeaked

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

私はアプリのコンテキストではなく活動を渡しているので、私はエラーを取得するアプリのコンテキストを入れしようとした場合には、それがありますメソッドが待機しているプロパティ。

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

その後、私の質問は、私はYouTubeStandalonePlayerを使用してServiceConnectionLeakedの問題を解決することができますどのように...です:事前

答えて

3

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

おかげで、私が見つけたこのソリューションをお試しくださいこのウェブサイト(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/

youtube apiでServiceConnectionLeakedを避けるには、この行を追加する必要があります。

youTubeThumbnailLoader.release(); 

すべてのコード:

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