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

Android Exoplayer-在重新打开活动时反复播放相同的音频,android,android-studio,kotlin,exoplayer2.x,Android,Android Studio,Kotlin,Exoplayer2.x,我正在创建一个exoplayer实例并添加一个流URL作为渐进媒体源,准备播放器并播放音频。当我返回到上一个活动并再次打开player活动时,player的另一个实例正在运行相同的音频(两个实例同时播放相同的音频)。我还有一个静音按钮。当我第一次打开活动时,它会按预期工作。重新打开活动时,“静音”按钮仅静音当前活动的ExoPlayer实例 我尝试将ExoPlayer代码移动到另一个类,并使用公共函数调用它们,但没有成功 val dataSourceFactory = DefaultDataSou

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

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

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";
    }
}

我希望在重新打开活动时运行同一个ExoPlayer,并使该特定实例静音

我最终使用共享首选项保存服务的状态。因此,无论何时启动服务,共享首选项中的布尔值都设置为true。因此,我只能在布尔值为false时启动服务。我还在活动和服务中使用广播接收器来交换消息

重写
onBackPressed()
并在其内部调用
finish()
。甚至不要认为你必须调用
finish()
。试试看。没用。音频仍在播放。还忘了提到我需要在后台播放音频。因此,我无法停止播放器onBackPressed()。如果您完成活动,则不应引用exoplayer,除非您将exoplayer存储在内存中。你试过释放exoplayer吗?是的。但是释放播放器对我没有帮助,因为我想在后台播放音频。那么你是在服务中运行exoplayer吗?你在问题中没有提到这一点。如果服务正在运行,您应该签入活动的
onCreate
,如果服务正在运行,您应该首先停止它,然后通过新文件再次启动它。