我在销毁并重新创建活动 3 次后收到此错误:
"There was a problem while playing (Playback ID: ....) Tap to retry"
以下是重现该问题的详细信息和步骤:
我的 Android 应用 (Match4app) 是一款纸牌游戏,可在每张卡片中显示图像和视频。这些视频使用 YouTubePlayerSupportFragment 显示。在一副牌中,每张牌都是一个片段。每次显示卡片时,片段的卡片都会使用其各自的 youTubePlayerFragment.initialize 方法创建一个新的 YouTubePlayerSupportFragment 实例:
youTubePlayerFragment.initialize( Constants.DEVELOPER_KEY,new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
if (!wasRestored) {
YPlayer = player;
YouTubePlayer.PlayerStyle style = YouTubePlayer.PlayerStyle.MINIMAL;
YPlayer.setPlayerStyle(style);
YPlayer.setFullscreen(false);
YPlayer.loadVideo(videoIDStatic);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
}
});
用户可以在同一张牌组(Activity)中从一张卡片(片段)跳转到另一张卡片(片段),视频一直播放良好。用户最多可以观看 30 张卡片(及其各自的视频)。每次从一张卡片跳转到另一张卡片时,Youtubeplayer 都会被释放并使用以下方法设置为 null:
public void stopVideo(){
if (YPlayer != null) {
YPlayer.release();
YPlayer = null;
if (!isAdded()) return;
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.remove(youTubePlayerFragment).commit();
}
}
当跳转到另一张卡片时,片段的卡片会再次使用其各自的 youTubePlayerFragment.initialize 方法创建一个新的 YouTubePlayerSupportFragment 实例。
现在,如果用户返回主菜单并且活动(deck)被销毁(在运行 stopVideo() 之后),用户可以重新打开相同的活动并重复所有这些任务。但是,我有这个奇怪的问题:
- 打开活动
- 观看卡片视频 --> 视频播放良好(最多可观看 30 个视频)
- 返回主菜单(即销毁活动)
- 重新打开活动
- 观看卡片视频 --> 视频播放良好(最多可观看 30 个视频)
- 返回主菜单(即销毁活动)
- 重新打开活动
- 观看卡片视频 --> 视频播放良好(最多可观看 30 个视频)
- 返回主菜单(即销毁活动)
- 重新打开活动
观看卡片视频 --> 所有视频都开始显示此信息:
"There was a problem while playing (Playback ID: ....) Tap to retry"
在此线程中报告了类似的问题,但没有解决方案: YouTubePlayerSupportFragment not playing Video