Android ExoPlayer控件在设置播放器后不工作

Android ExoPlayer控件在设置播放器后不工作,android,service,playback,exoplayer,Android,Service,Playback,Exoplayer,我有一个Android应用程序,使用运行在服务中的ExoPlayer播放音频。在活动A中,您可以选择要播放的曲目。服务启动并开始播放音频。控件将变为可见,所有内容看起来都正常: 当我转到活动B时,音频会继续在后台播放,因为这是一项服务。当我返回活动-A时,会显示控件,但显示不正确。音频仍在正常播放,但进度条不正确,同时显示播放和暂停按钮,而不仅仅是暂停: 我必须与控件交互,比如单击“播放”按钮,然后它们看起来正常,进度条显示正确 这是将播放器附加到控件的方法: private void in

我有一个Android应用程序,使用运行在服务中的ExoPlayer播放音频。在活动A中,您可以选择要播放的曲目。服务启动并开始播放音频。控件将变为可见,所有内容看起来都正常:

当我转到活动B时,音频会继续在后台播放,因为这是一项服务。当我返回活动-A时,会显示控件,但显示不正确。音频仍在正常播放,但进度条不正确,同时显示播放和暂停按钮,而不仅仅是暂停:

我必须与控件交互,比如单击“播放”按钮,然后它们看起来正常,进度条显示正确

这是将播放器附加到控件的方法:

private void initializePlayer() {
    if (isBound && audioPlayerService != null) {
        player = audioPlayerService.getPlayerInstance();
        playerControlView.setPlayer(player);
    }
}

为什么控件不能立即工作?

用以下代码修复:

private void initializePlayer() {
    if (isBound && audioPlayerService != null) {
        player = audioPlayerService.getPlayerInstance();
        if (audioPlayerService.isPlaying()) {
            playerControlView.setVisibility(View.VISIBLE);
        }
        playerControlView.setPlayer(player);
    }

}
说明:

经过一些研究,我注意到在使用
PlayerControlView.setPlayer()
将播放机连接到视图后,调用
PlayerControlView.updateAll()
方法以使一切看起来正常。但是,要检查控件是否可见,并且除非控件实际可见,否则更新不会完成(方法退出):

if (!isVisible() || !isAttachedToWindow) {
  return;
}

在我的代码中,我首先将播放器连接到控件,然后才使它们可见(这对我来说似乎是合乎逻辑的),所以这就是问题所在

用以下代码修复:

private void initializePlayer() {
    if (isBound && audioPlayerService != null) {
        player = audioPlayerService.getPlayerInstance();
        if (audioPlayerService.isPlaying()) {
            playerControlView.setVisibility(View.VISIBLE);
        }
        playerControlView.setPlayer(player);
    }

}
说明:

经过一些研究,我注意到在使用
PlayerControlView.setPlayer()
将播放机连接到视图后,调用
PlayerControlView.updateAll()
方法以使一切看起来正常。但是,要检查控件是否可见,并且除非控件实际可见,否则更新不会完成(方法退出):

if (!isVisible() || !isAttachedToWindow) {
  return;
}
在我的代码中,我首先将播放器连接到控件,然后才使它们可见(这对我来说似乎是合乎逻辑的),所以这就是问题所在