Я пытаюсь загрузить миниатюры видео Youtube в RecyclerView. Я сталкиваюсь с некоторыми проблемами.
Вот что я делаю в своем адаптере:
public static class ItemViewHolder extends RecyclerView.ViewHolder {
private YouTubeThumbnailView thumb;
public Post post;
public ItemViewHolder(View v) {
thumb = (YouTubeThumbnailView) v.findViewById(R.id.youtube_thumbnail);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof ItemViewHolder) {
((ItemViewHolder) holder).thumb.initialize(YOUTUPEKEY, new YouTubeThumbnailView.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubeThumbnailView youTubeThumbnailView, YouTubeThumbnailLoader youTubeThumbnailLoader) {
youTubeThumbnailLoader.setVideo(VIDEOID);
}
@Override
public void onInitializationFailure(YouTubeThumbnailView youTubeThumbnailView, YouTubeInitializationResult youTubeInitializationResult) {
}});
}}}
Это прекрасно работает, но я не делаю это правильно. Когда я использую один и тот же адаптер в другом действии, я получаю эту ошибку:
Activity com.example.yasser.version6.Mespublications has leaked ServiceConnection [email protected] that was originally bound here
и для загрузки эскизов требуется время, и иногда они смешиваются между ними при прокрутке.
Я добавил функцию, чтобы освободить все Youtube Loaders:
public void ReleaseLoaders() {
for (YouTubeThumbnailLoader loader : loaders.values()) {
loader.release();
}
}
и я вызываю эту функцию из Activity Onstop():
@Override
public void onStop() {
super.onStop();
mAdapter.ReleaseLoaders();
}
Он работал нормально в течение некоторого времени, но иногда случается сбой.