当我回到上一个视图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();
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...