アクティビティの断片にYouTubeThumbnailView
が1つあります。私は(から戻るボタンを押すときにのみ、時にはまたは)を起動したときYouTubeThumbnailLoadersのリークと解放
public class MyFragment extends Fragment {
private YouTubeThumbnailView mThumbnailView;
public class FetchThumbnailTask extends AsyncTask<> implements YouTubeThumbnailView.OnInitializedListener {
protected void onPostExecute(String videoId) {
mThumbnailView.setTag(videoId);
mThumbnailView.initialize(YOUTUBE_DATA_API_KEY, this);
}
@Override
public void onInitializationSuccess(YouTubeThumbnailView view, YouTubeThumbnailLoader loader) {
loader.setVideo((String) view.getTag());
}
}
}
これは、次のエラーが発生する(サムネイルをクリックする)サムネイルでビデオのためのYouTubeStandalonePlayer
:ビューは、非同期タスクから設定されています:
E/ActivityThread: Activity com.example.app.MyActivity has leaked ServiceConnection [email protected] that was originally bound here
android.app.ServiceConnectionLeaked: Activity com.example.app.MyActivity has leaked ServiceConnection [email protected] that was originally bound here
私はこれを仮定し、それらで行われたときにYouTubeThumbnailLoader
Sを解放に関するドキュメントで見つかった警告としなければなりませんでした。他のStackOverflowの質問に示唆したように、私はonInitializationSuccess
からMyFragment
でmThumbnailLoader
としてローダを節約し、クリック操作でそれを解放しようとした:
@Override
public void onInitializationSuccess(YouTubeThumbnailView view, YouTubeThumbnailLoader loader) {
loader.setVideo((String) view.getTag());
mThumbnailLoader = loader;
}
@Override
public void onClick(View v) {
if (mThumbnailLoader != null) {
mThumbnailLoader.release();
}
Intent intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), YOUTUBE_DATA_API_KEY, (String) v.getTag());
startActivity(intent);
}
どのように私は正しくこの問題を回避するために、ローダを解放するのですか?