У меня возникли проблемы после переопределения метода onDestroy. Мое приложение - музыкальный проигрыватель, используя экземпляр медиаплеера, который мне нужен в какой-то момент, чтобы заставить его освободить его, если музыка не воспроизводится. Это мой код до сих пор, для создания трюка я как перекрытого в OnKeyDown() и OnDestroy() метод:onDestroy crash после закрытия app
@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 – stinepike
A tip super.onDestroy(); должно быть первым утверждением в onDestroy() – Raghunandan
Я сделал то, что вы сказали, но проблема все еще там – Pievis