2014-02-19 2 views
1

Я хочу иметь функцию, вызываемую при закрытии моего приложения. Все мои действия в моем приложении расширяют пользовательский класс MenuActivity, который, в свою очередь, расширяет класс Activity. В MenuActivity у меня есть следующий код ...Как уловить приложение Android

@Override 
protected void onDestroy() 
{ 
    System.out.println("DESTROY IT"); 

} 

По какой-то причине я никогда не вижу этот текст. Я пробовал как с super.onDestroy();, так и без него. Я хочу, чтобы это можно было вызвать, когда пользователь закрывает приложение (удерживает кнопку «домой», чтобы просмотреть открытые приложения и проведите по экрану, чтобы закрыть), или если приложение выйдет из строя. Мне нужно сделать небольшую очистку при закрытии приложения (закрыть текущие уведомления и несколько других вещей).

Я думал, что это должно быть достаточно простым, чтобы использовать метод onDestroy, но он никогда не вызывает вызова. Есть идеи?

ответ

0

Вы должны использовать onStop() для этого. Подробнее о жизненном цикле активности андроида можно узнать здесь: http://developer.android.com/training/basics/activity-lifecycle/stopping.html

Руководства разработчика разработчика для Android - отличный ресурс.

+0

'onStop()' метод недостаточен для того, что я хочу. То, что я делаю, это создание постоянного уведомления, которое позволяет воспроизводить, приостанавливать и перейти к предыдущим и последующим трекам в моем приложении. Я хочу, чтобы это уведомление оставалось в живых, даже если вы переключаетесь на другое приложение или отправляетесь домой на свой телефон, чтобы вы могли получить доступ к функциям плеера вне приложения. Функция 'onStop()' вызывается, если вы попали домой на свой телефон, так что это побеждает цель моего текущего уведомления. – jas7457

+0

Похоже, вам нужно использовать Сервис. http://developer.android.com/guide/components/services.html – Jggrnaut

1

Если вы хотите, чтобы ваше приложение запускалось, когда пользователи используют другие приложения, вам необходимо реализовать медиаплеер в качестве функции переднего плана. Вы можете передать уведомление при запуске этой службы.

Проверить эту ссылку: http://developer.android.com/guide/topics/media/mediaplayer.htmlhttp://developer.android.com/guide/topics/media/mediaplayer.html особенно раздел «Запуск в качестве переднего плана службы»

1

метод onDestroy() не будет вызываться каждый раз, но вы можете сделать так:

public void onPause() { 
    super.onPause() 
    if (isFinishing()) { 
     //call some method 
    } 
} 
+0

Я тоже пробовал этот метод, и он, похоже, не работает. Код в предложении 'if (isFinishing()) никогда не достигается, когда вы удерживаете кнопку меню и прокручиваете действие влево или вправо, чтобы закрыть его. – jas7457

+0

, когда вы удерживаете кнопку меню, ваша деятельность не закрывает ее, она останавливается или приостанавливается. ваша деятельность заканчивается, когда вы нажимаете кнопку «Назад», или «Вызов метода»(). – Autocrab

+0

Он не вызывается, когда вы открываете диспетчер задач и завершаете задачу. – jas7457

Смежные вопросы