如何解决当我回到上一个视图ViewPager2时,ExoPlayer无法播放onViewRecycled
我正在使用带有回收器视图适配器的ViewPager2,并按照以下所示进行设置
当我滑动屏幕并更改索引时,它可以很好地用于新索引,但是当我转到上一个索引时,它不会播放任何视频吗?有什么建议吗?
RecylcerViewAdapter.java
@Override
public void onViewDetachedFromWindow(@NonNull VideoPlayerViewHolder holder) {
super.onViewDetachedFromWindow(holder);
holder.pausePlayer();
holder.releasePlayer();
}
@Override
public void onViewAttachedToWindow(@NonNull VideoPlayerViewHolder holder) {
super.onViewAttachedToWindow(holder);
holder.startPlayer();
}
@Override
public void onViewRecycled(@NonNull VideoPlayerViewHolder holder) {
super.onViewRecycled(holder);
holder.startPlayer();
}
@Override
public void onBindViewHolder(@NonNull VideoPlayerViewHolder holder,int position) {
holder.setExoplayer(getItem(position).getUrl());
}
ViewHolderr.java
public void startPlayer() {
player.setPlayWhenReady(true);
player.getPlaybackState();
}
public void pausePlayer() {
player.setPlayWhenReady(false);
player.getPlaybackState();
}
public void setExoplayer(String url) {
player = new SimpleExoPlayer.Builder(itemView.getContext()).build();
player.setRepeatMode(Player.REPEAT_MODE_ONE);
dataSourceFactory = new DefaultDataSourceFactory(itemView.getContext(),"exo-player");
mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(url));
player.prepare(mediaSource);
playerView.setPlayer(player); //need to transfer
player.seekTo(playbackPosition);
player.addListener(this);
}
public void releasePlayer() {
player.setPlayWhenReady(false);
player.release();
player.stop(true);
}
解决方法
当这样附加视图时设置Exoplayer
@Override
public void onViewAttachedToWindow(@NonNull VideoPlayerViewHolder holder) {
super.onViewAttachedToWindow(holder);
holder.setExoplayer();
holder.startPlayer();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。