gpt4 book ai didi

java - MediaPlayer 中的 IllegalStateException

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:19 34 4
gpt4 key购买 nike

这是我的代码

if (player != null) {
if(player.isPlaying()){
player.pause();
player.stop();
}
player.release();
}

这里是错误

FATAL EXCEPTION: main
java.lang.IllegalStateException
at android.media.MediaPlayer.isPlaying(Native Method)
at com.mindefy.sindhipathshala.RecViewAdapter.mediafileRelease(RecViewAdapter.java:234)
at com.mindefy.sindhipathshala.SectionFruits.onBackPressed(SectionFruits.java:252)

我是 Android 的初学者,我对 MediaPlayer 的生命周期非常困惑。

这是从另一个 ActivityonBackPressed() 函数调用的适配器中的一个函数。 player 是一个类变量。

我在与

相同的文件中发布此 MediaPlayer
public void onClick(View v) {
try {
if (player != null) {
player.stop();
player.release();
}
} catch (Exception e) {
}
player = MediaPlayer.create(activityContext, soundId);
player.start();
}

最佳答案

问题是您没有跟踪 MediaPlayer 实例的状态。

在调用 isPlaying() 之前你只执行了一次 null 值检查,虽然 player 仍然可以被释放(但不是 null )。

在已释放的 MediaPlayer 实例上调用 isPlaying() 将导致 IllegalStateException

为了避免这种情况,您可以在释放时将 player 设置为 null:

player.release();
player = null;

或者您可以使用 boolean 标志来跟踪其状态:

boolean isReleased;

// ...

player.release();
isReleased = true;

因此您可以在必要时检查此标志:

if (player != null && !isReleased) {
if(player.isPlaying()) {
// ...
}
}

(不要忘记在适当的时候将其设置为false)

关于java - MediaPlayer 中的 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38158194/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com