выпуск медиаплеера при вызове принудительного выхода OnDestroy при нажатии бэкплейера

У меня есть приложение, которое воспроизводит звук после того, как пользователь просмотрел пару просмотров. Сначала все работало нормально, за исключением случаев, когда во время воспроизведения звука нажималась кнопка «Назад», после чего приложение закрывалось, но звук продолжался. После исследования я вставил метод OnDestroy и выпустил медиаплеер, который теперь останавливается при нажатии кнопки «Назад» во время воспроизведения звука.

Однако теперь, когда кнопка «Назад» нажата во время одного из предыдущих представлений перед запуском медиаплеера, я получаю сообщение о принудительном закрытии, а логарифм говорит «Невозможно уничтожить активность» — я полагаю, потому что нет медиаплеера для его выпуска? Кто-нибудь знает что происходит?

Я пробовал оператор if для super.OnDestroy только при воспроизведении мультимедиа, но это не имеет никакого эффекта.


person user1878458    schedule 04.01.2013    source источник
comment
Не видя никакого кода, невозможно сказать. Однако я предполагаю, что ваша ссылка MediaPlayer является либо null, либо экземпляр MediaPlayer не находится в «действительном» состоянии, чтобы вы могли делать то, что пытаетесь сделать.   -  person Squonk    schedule 05.01.2013


Ответы (1)


Если вы пытаетесь освободить свой Mediaplayer, но не инициализировали его, если пользователь не воспроизводит песню, имеет смысл, что вы получаете исключение.

Как часто, проверка того, является ли ваше значение нулевым или нет, вероятно, является ключом. Еще одна вещь: не обрабатывайте этот случай в onDestroy, потому что он не гарантированно будет вызван, предпочтите ему onStop, если это возможно.

person ben    schedule 04.01.2013
comment
да, я думаю, что получаю исключение нулевого указателя». Как я могу инициализировать медиаплеер до его запуска? Предположительно, мне пришлось бы инициализировать его сразу после вызова MainActivity. - person user1878458; 05.01.2013
comment
Хорошо, мне удалось инициализировать его из другого потока, и теперь он работает нормально. Спасибо за вашу помощь и советы по onStop - person user1878458; 05.01.2013