【问题标题】:onDestroy crash after closing app关闭应用程序后 onDestroy 崩溃
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试下面对我有用的代码

    @Override

    public void onDestroy() {
    
        mediaPlayer.stop();
    
        super.onDestroy();
    
            }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多