2

在覆盖 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 秒并显示一条消息:“程序应用程序已关闭”。我知道我在这里做错了,但我不知道是什么,我需要一些帮助。谢谢指教!

4

2 回答 2

4

super.onDestroy()onDestroy如果您覆盖它,则必须是该方法的第一次调用。

于 2013-04-22T16:49:13.407 回答
0

试试下面对我有用的代码

@覆盖

public void onDestroy() {

    mediaPlayer.stop();

    super.onDestroy();

        }

}

于 2019-06-19T05:35:27.007 回答