在重写方法onDestroy之后,我遇到了一些问题。我的应用程序是一个音乐播放器,使用mediaplayer的实例,如果没有音乐播放,我需要在某个时候强制释放它。到目前为止,这是我的代码,我已经覆盖了onKeyDown()和onDestroy()方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if(mp.isPlaying())
{
//Genera la notifica
generateNotificationSong();
//Muovi in background
moveTaskToBack(true);
}
else finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
//Faccio un override della funzione onDestroy per evitare che il mediaplayer continui
//a mandare musica in background, inoltre l'UpdateTimeTask risulta inutile
@Override
public void onDestroy()
{
mNotify.cancel(001);
if(mHandler != null)
mHandler.removeCallbacks(mUpdateTimeTask); //rimuovo il thread che aggiorna la seekbar
if(mp != null)
mp.release(); //rilascio il media player
super.onDestroy();
}就是这样,现在当我想要关闭应用程序时,我只需按下后退按钮,应用程序就会调用onPause()、onStop()和onDestroy()方法,对吗?无论如何,有时会发生在关闭后,手机冻结4-5秒,并显示一条消息:“程序应用程序已关闭”。我知道我做错了什么,但我不知道是什么,我需要帮助。谢谢你的建议!
发布于 2013-04-23 00:49:13
如果重写onDestroy方法,则super.onDestroy()必须是该方法的第一个调用。
发布于 2019-06-19 13:35:27
试试下面的代码,它对我很有效
@Override
public void onDestroy() {
mediaPlayer.stop();
super.onDestroy();
}}
https://stackoverflow.com/questions/16152354
复制相似问题