Windows Phone 8 - событие в приложении убито / завершено (закрытие фонового аудиоагента)
Текущий сценарий выглядит так:
- Пользователь открывает мое приложение
- Фоновый аудиоагент начинает играть
- Пользователь возвращается на стартовый экран
- Звук продолжает воспроизводиться из фонового аудиоагента
- Пользователь убивает приложение из "панели задач" (кнопка закрытия в правом верхнем углу)
- Фоновый аудио агент продолжает играть.
Мне нужно добиться следующего:
- Закройте аудио-фоновый агент, когда пользователь убивает приложение (я знаю, что могу использовать метод close на backgroundaudioplayer, но мне нужно вызывать его, когда приложение убито / завершено).
Вопросы:
- Есть ли какое-либо событие помимо: Application_Deactivation / Application_Closing, когда пользователь действительно завершает работу / убивает приложение?
- Если нет события, подобного упомянутому выше, могу ли я узнать из Application_Deactivation / Application_Closing, когда пользователь действительно завершает работу / убивает приложение?
Спасибо
2 ответа
Нет способа определить, когда приложение было закрыто переключателем задач или системой. Обычно приложения хранят надгробия до тех пор, пока их не активируют или не убивают. Вы должны сделать всю работу по очистке в Application_Closing
а также Application_Deactivated
События.
Это имеет одну простую причину: когда приложение находится в фоновом режиме, оно зависает и не может выполнить код. Всякий раз, когда пользователь или система убивает его (например, чтобы получить больше памяти), приложение и все его данные полностью стираются из памяти. Без уведомления вашего приложения и без предоставления ему возможности повысить производительность (что будет контрпродуктивно).
Так что у вас просто есть возможность использовать Application_Deactivated
событие, когда пользователь нажимает кнопку запуска или запускается другое приложение или Application_Closing
событие, когда пользователь закрывает приложение с помощью кнопки назад.
Прочтите это, если вам нужна дополнительная информация о жизненном цикле приложения Windows Phone 8.
Кроме того, пользователь может ожидать, что фоновое аудио все еще работает после закрытия приложения. Подкаст, например, должен воспроизводиться, когда я закрыл приложение подкаста. О каком аудио ты говоришь? Может быть, мы сможем найти умное решение...
Единственными событиями, на которые вы можете реагировать, являются закрытие и деактивация. Поэтому здесь вы можете вызывать BackgroundAudioPlayer.Instance.Close() только в событии "Application_Closing".