Мое приложение показывает предупреждение, на которое пользователь должен отреагировать, прежде чем продолжить выполнять другие действия. Я пытаюсь понять, как лучше это реализовать. Использование 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, где мы не получили ответа.)