Exoplayer - 在重新打开 activity 时反复播放相同的音频

Exoplayer - Plays same audio over and over on reopening the activity

我正在创建一个 exoplayer 实例并添加一个流 URL 作为渐进式媒体源,准备播放器并播放音频。当我回到之前的 activity 并再次打开播放器 activity 时,播放器的另一个实例正在 运行 播放相同的音频(两个实例同时播放相同的音频)。我还有一个静音按钮。当我第一次打开 activity 时,它按预期工作。重新打开 activity 时,静音按钮只会将当前 activity

的 ExoPlayer 实例静音

我尝试将 ExoPlayer 代码移动到另一个 class 并使用 public 函数调用它们,但没有成功

val dataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, packageName))
val newMediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse("STREAM URL"));
val exoPlayer = ExoPlayerFactory.newSimpleInstance(this);
exoPlayer.prepare((newMediaSource));
exoPlayer.playWhenReady = true;

muteButton.setOnClickListener {
    if(muteButton.tag == "muted")
    {
        exoPlayer.volume = 1f;
        muteButton.tag = "unmuted";
    }
    else
    {
        exoPlayer.volume = 0f;
        muteButton.tag = "muted";
    }
}

我希望在重新打开 activity 时使用与 运行 相同的 ExoPlayer,并使该特定实例静音

我最终使用共享首选项来保存服务的状态。因此,无论何时启动服务,共享首选项中的布尔值都会设置为 true。所以只有当布尔值是假的时候我才能启动服务。此外,我在 activity 和服务中都使用广播接收器来交换消息。