2009-11-14 3 views
4

В моем приложении используется удаленная служба для воспроизведения звука. Я делаю это так, что никакой активности не владеет воспроизведением звука - пользователь может вызвать звук , который будет воспроизводиться с одного действия, и звук будет продолжать играть, когда они перемещаются по окну. Тем не менее, я хочу сказать службе приостановить или остановить воспроизведение звука, когда пользователь «выгружает» приложение либо путем резервного копирования, блокировки дисплея, либо удара дома. Когда приложение было единственным , я делал это в onPause. Итак, я думаю, что я по существу ищет «onPause» на уровне приложения/задачи. Есть такая вещь ? Если нет, то какой способ «наилучшей практики» получить уведомление о том, что задача была приостановлена ​​пользователем, либо поддерживая все выход , либо ударяя Home?Android: целевой или прикладной эквивалент onPause

ответ

5

Хмммм ... К сожалению, я подозреваю, что там нет простого ответа. Я думаю, поэтому встроенный медиаплеер и Pandora используют уведомление, чтобы легко позволить пользователю вернуться в приложение, чтобы заставить его заткнуться.

Если поток активности довольно линейный, то возврат из приложения такой же, как и возврат к первоначальной активности.

Трюк, который я использовал в одном сценарии, состоял в том, чтобы каждое действие уведомляло службу в onPause() и onResume(). Служба будет отслеживать их, и если в течение некоторого периода времени он получил onPause() без последующего onResume(), предполагалось, что пользователь ушел (HOME, входящий телефонный звонок, входящее текстовое сообщение, ответ на какое-либо приложение через уведомление и т. Д.).

Вы также можете посмотреть ACTION_SCREEN_OFF трансляцию Intents, чтобы справиться с этим сценарием.

Прошу прощения за то, что у меня нет лучшего ответа на серебряную пулю. Возможно, у кого-то еще будет лучшая идея.

+0

Это некоторые творческие решения. У меня есть аналогичная проблема, что если бы ответ мог сочетаться с вашим решением, чтобы быть идеальным для меня. Я мог бы просто пойти с ACTION_SCREEN_OFF, а также ... большое предложение. Пожалуйста, дайте мне знать, что вы думаете о: http://stackoverflow.com/questions/1735245/overriding-the-activity-task-behavior-in-android Спасибо! – Rich

+0

Извините, я не занимаюсь со стеками активности. – CommonsWare

+0

Не беспокойтесь. Мое решение окажется тем или иным из того, что вы предложили (уведомление, подобное Pandora, или поддержание состояния активности в службе и прослушивание соответствующей трансляции (ов)). – Rich

1

Я был в несколько похожей ситуации, и по существу я сделал то, что предложил Марк; Вместо отдельного уведомления у меня просто была функция подсчета вызовов для моих API-интерфейсов registerCallback() и unregisterCallback(), которые каждый из них должен был сделать в любом случае.

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

  • Нет связанных вопросов^_^