我正在创建一个应用程序,该应用程序将在开始时加载 MediaPlayer,然后几秒钟后该类将被销毁并移动到另一个类。问题是,每当第一个类被破坏时,我都试图停止 MediaPlayer,但它只会强制关闭我。这是代码。
public class HelloWorldActivity extends Activity {
MediaPlayer mp;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.otj);
mp.start();
Thread LogoTimer = new Thread() {
public void run() {
try {
int LogoTimer = 0;
while(LogoTimer < 5000) {
sleep(100);
LogoTimer = LogoTimer + 100;
}
startActivity(new Intent("com.example.HelloWorld.CLEARSCREEN"));
}
catch (InterruptedException e) {
e.printStackTrace();
}
finally {
finish();
}
}
};
LogoTimer.start();
}
protected void onDestroy() {
super.onDestroy();
mp.release();
}
最佳答案
在 onCreate()
中,您声明了另一个名为 mp
的变量,它隐藏了类字段 mp
,这意味着 mp
您调用的 onDestroy()
为 null。
从 final MediaPlayer mp = MediaPlayer.create(this, R.raw.otj);
行中删除 final MediaPlayer
,这样您就可以使用原始的所有内容时间。
您的代码应如下所示:
public class HelloWorldActivity extends Activity {
MediaPlayer mp;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mp = MediaPlayer.create(this, R.raw.otj);
mp.start();
关于java - Android在尝试使用release()时强制关闭;停止媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608138/