Android: держите предупреждение впереди, чтобы пользователь должен был отреагировать

Мое приложение показывает предупреждение, на которое пользователь должен отреагировать, прежде чем продолжить выполнять другие действия. Я пытаюсь понять, как лучше это реализовать. Использование Activity для оповещения не совсем подходит.

В моей текущей реализации предупреждение - это активность (A). Когда запускается другая активность из того же пакета и вызывается onStop, она запускает себя снова, используя FLAG_ACTIVITY_REORDER_TO_FRONT, так что она всегда находится на вершине стека. Это работает, как описано, если только активность A не использует Theme.Dialog или Theme.Translucent.

Измененный лог:

Activity A created
Activity A started
Activity A resumed
Activity A paused
Activity B created
Activity B started
Activity B resumed
Activity B gains window focus
Activity A stopped
Top activity in stack is Activity B, so Activity A relaunches itself
Activity B paused
Activity A started
Activity A resumed

Верхней активностью в стеке должна быть активность A, однако активность B остается на переднем плане.

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

Есть ли способ перевести активность А в фокус? Я понимаю, что это необычное поведение, но необходимо, чтобы активность А оставалась на переднем плане, пока она не будет намеренно завершена.

Я также открыт для предложений о совершенно другом и лучшем подходе!

FWIW, я использую версию 2.2.

(Cross-posted from http://groups.google.com/group/android-developers/browse_thread/thread/d46fd7d59abe15a0, где мы не получили ответа.)

7
задан jtoberon 14 October 2011 в 13:52
поделиться