Android setRaetainInstance时Youtube泄漏了服务连接(true)

Android setRaetainInstance时Youtube泄漏了服务连接(true),android,youtube-api,Android,Youtube Api,我有以下错误的问题: 04-26 11:41:58.662: E/ActivityThread(10933): Activity MyActivity has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@2cf388d that was originally bound here 我有一个片段,在onCreate中设置了以下内容: /** * */ @Override public voi

我有以下错误的问题:

04-26 11:41:58.662: E/ActivityThread(10933): Activity MyActivity has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@2cf388d that was originally bound here
我有一个片段,在onCreate中设置了以下内容:

/**
 * 
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.setRetainInstance(true);
}
我设置这个是因为我有一个带有缩略图的YouTubevideo列表,而我没有 希望用户每次旋转屏幕时都重新加载这些缩略图。 那只是不必要的交通

以下是我的listview适配器:

public class YoutubeListAdapter extends BaseAdapter {
    private List<TutorialEntry> entries = null;
    private List<View> entryViews = null;
    private Map<YouTubeThumbnailView, YouTubeThumbnailLoader> thumbnailViewToLoaderMap = null;
    private LayoutInflater inflater = null;
    private TutorialThumbnailListener thumbnailListener = null;
    private boolean labelsVisible = false;;

    public YoutubeListAdapter(Context context, List<TutorialEntry> entries) {
        this.entries = entries;
        this.entryViews = new ArrayList<View>();
        this.thumbnailViewToLoaderMap = new HashMap<YouTubeThumbnailView, YouTubeThumbnailLoader>();
        this.inflater = LayoutInflater.from(context);
        this.thumbnailListener = new TutorialThumbnailListener(this.thumbnailViewToLoaderMap);
        this.labelsVisible = true;
    }

    @Override
    public int getCount() {
        return this.entries.size();
    }

    @Override
    public TutorialEntry getItem(int position) {
        return entries.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TutorialEntry entry = entries.get(position);

        ViewHolder holder = null;

        if (convertView == null) {
            convertView = this.inflater.inflate(R.layout.fragment_tutorials_row, parent, false);

            holder = new ViewHolder();
            holder.thumbnail = (YouTubeThumbnailView) convertView.findViewById(R.id.tutorials_row_thumbnail);
            holder.thumbnail.setTag(entry.getVideoId());
            holder.thumbnail.initialize(Globals.GOOGLE_API_KEY, this.thumbnailListener);
            holder.textViewTitle = (TextView) convertView.findViewById(R.id.tutorials_row_title);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();

            YouTubeThumbnailLoader loader = this.thumbnailViewToLoaderMap.get(holder.thumbnail);

            if (loader == null) {
                holder.thumbnail.setTag(entry.getVideoId());
            } else {
                holder.thumbnail.setImageResource(R.drawable.youtube_loading_thumbnail);

                loader.setVideo(entry.getVideoId());
            }
        }

        holder.textViewTitle.setText(entry.getTitle());
        holder.textViewTitle.setVisibility(labelsVisible ? View.VISIBLE : View.GONE);

        return convertView;
    }

    public void releaseLoaders() {
        for (YouTubeThumbnailLoader loader : this.thumbnailViewToLoaderMap.values()) {
            loader.release();
        }
    }

    public void setLabelVisibility(boolean labelsVisible) {
        this.labelsVisible = labelsVisible;

        for (View view : this.entryViews) {
            view.findViewById(R.id.tutorials_row_title).setVisibility(labelsVisible ? View.VISIBLE : View.GONE);
        }
    }

    private static class ViewHolder {
        private YouTubeThumbnailView thumbnail = null;
        private TextView textViewTitle = null;
    }
}

有人能帮我了解那里发生了什么,以及我如何解决这个问题吗?

这个异常通常来自于没有释放所有加载程序。据我所知,您从不调用
releaseLoaders()
方法,因此,由于活动被破坏时,加载程序只是坐在那里。按照安卓的设计方式,你应该释放这些加载程序,否则你会出现内存泄漏

就我个人而言,我将我的加载程序版本放在我的
onstop()
方法中,它工作得非常出色

@Override
public void onStop() {
    super.onStop();
    for (YouTubeThumbnailLoader loader : thumbnailViewToLoaderMap.values()) {
        loader.release();
    }
}

此异常通常来自未释放所有加载程序。据我所知,您从不调用
releaseLoaders()
方法,因此,由于活动被破坏时,加载程序只是坐在那里。按照安卓的设计方式,你应该释放这些加载程序,否则你会出现内存泄漏

就我个人而言,我将我的加载程序版本放在我的
onstop()
方法中,它工作得非常出色

@Override
public void onStop() {
    super.onStop();
    for (YouTubeThumbnailLoader loader : thumbnailViewToLoaderMap.values()) {
        loader.release();
    }
}

此异常通常来自未释放所有加载程序。据我所知,您从不调用
releaseLoaders()
方法,因此,由于活动被破坏时,加载程序只是坐在那里。按照安卓的设计方式,你应该释放这些加载程序,否则你会出现内存泄漏

就我个人而言,我将我的加载程序版本放在我的
onstop()
方法中,它工作得非常出色

@Override
public void onStop() {
    super.onStop();
    for (YouTubeThumbnailLoader loader : thumbnailViewToLoaderMap.values()) {
        loader.release();
    }
}

此异常通常来自未释放所有加载程序。据我所知,您从不调用
releaseLoaders()
方法,因此,由于活动被破坏时,加载程序只是坐在那里。按照安卓的设计方式,你应该释放这些加载程序,否则你会出现内存泄漏

就我个人而言,我将我的加载程序版本放在我的
onstop()
方法中,它工作得非常出色

@Override
public void onStop() {
    super.onStop();
    for (YouTubeThumbnailLoader loader : thumbnailViewToLoaderMap.values()) {
        loader.release();
    }
}