Android - обнаружение «приложение стало активным» из многозадачности - PullRequest
1 голос
/ 27 мая 2011

Я пытаюсь определить, стало ли мое приложение активным из многозадачного режима, и отображаю диалоговое окно.

Вариант использования выглядит примерно так: пользователь использует приложение -> нажимает кнопку «Домой» -> что-то делает -> пользователь снова нажимает на приложение

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

Я хочу отобразить диалог, когда это произойдет. Я использовал onRestart () для того же, и он работает. Единственная проблема заключается в том, что даже когда пользователь выполняет какое-либо действие в приложении, а затем выполняет ответный удар, отображается диалоговое окно.

Я прошел жизненный цикл активности несколько раз, но не смог найти решение. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 мая 2011

Я добился этого, установив флаг в Shared Preferences в onStop (), и очистил его в onDestroy ().

Затем я переопределил кнопку Back, чтобы сбросить флаг при каждом нажатии.Это решает проблему, о которой я говорил.

Теперь в onRestart (), если флаг установлен в true .... Я отображаю диалог.

Я знаю, что это не самое элегантное решение, ноделает работу!Надеюсь, это кому-нибудь поможет.

0 голосов
/ 27 мая 2011

Что ж, вы можете определить приложение переднего плана, используя метод, описанный в Определение текущего приложения переднего плана из фоновой задачи или службы : ищите getForegroundApp. Вы можете запустить таймер, который периодически проверяет, находится ли приложение на переднем плане, а если нет, то установить переменную после подходящей задержки (чтобы убедиться, что вы не попали в неправильный порядок при переключении действий). Очистите переменную в onStart, и если когда-либо вызывается onCreate из rooth Activity, вы знаете, что приложение только что стало активным.

...