【发布时间】:2013-04-22 16:43:47
【问题描述】:
在覆盖 onDestroy 方法后我遇到了一些问题。 我的应用程序是一个音乐播放器,如果没有音乐正在播放,我需要在某些时候使用我需要的媒体播放器实例来强制释放它。 到目前为止,这是我的代码,我已经覆盖了 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 秒并显示一条消息:“程序应用程序已关闭”。 我知道我在这里做错了,但我不知道是什么,我需要一些帮助。 感谢您的建议!
【问题讨论】:
-
检查 mnotify 是否为 null 也检查 mp 是否为 null
-
提示 super.onDestroy();必须是 onDestroy() 中的第一条语句
-
你说的我已经做了,但问题仍然存在
标签: android android-activity media-player ondestroy