Проверьте, активна ли активность в службе намерений Gcm

#android #android-intent

#Android #android-намерение

Вопрос:

Я хочу знать, открыто ли у пользователя приложение, потому что, когда я получаю широковещательную рассылку от GCM, я создаю уведомление с намерением для приложения. Когда пользователь нажимает на уведомление, он запускает новое намерение для основного действия, помещая старое основное действие в задний стек, а затем, когда пользователь запрашивает обратную навигацию, он закрывает предполагаемое действие и открывает (снова для него) последнее действие в стеке.

Подведение итогов:

Текущая активность на экране: XActivity

Новое уведомление с намерением XActivity.

Пользователь нажимает на уведомление, поэтому стек — это XActivity, XActivity.

Как я могу определить, отображается ли XActivity уже и просто отправить ему дополнительный контент?

Спасибо!

Комментарии:

1. android manifest устанавливает режимы запуска .. как режим одного экземпляра для очистки в документах read android о режимах запуска developer.android.com/guide/topics/manifest /…

Ответ №1:

Установите режим запуска вашей активности singleTop , а затем запустите его с намерением, имеющим флаг FLAG_ACTIVITY_NEW_TASK . Это запустит действие, если оно не запущено, в противном случае будет использоваться запущенный экземпляр..

Комментарии:

1. Запущенный экземпляр получит дополнительные данные из намерения?

2. Да, вы можете переопределить OnNewIntent() метод действия, чтобы получить данные из намерения.

3. Но каким будет этот цикл? сначала onCreate, а затем onNewIntent? (если действие было остановлено при вызове намерения)

4. Если действие не было запущено, будет вызван onCreate, но onNewIntent вызываться не будет. Обратное происходит, если действие уже было запущено.

Ответ №2:

Вы можете объявить логическую переменную: boolean isOnPause;

затем переопределите метод onResume() и сделайте isOnPause = false; переопределите метод onPause() и сделайте isOnPause = true;

и проверьте эту переменную перед запуском нового намерения

Комментарии:

1. Что делать, если ваше приложение не запускается, когда приходит сообщение GCM?

2. Вопрос начинался так: «Я хочу знать, открыто ли у пользователя приложение», и, я думаю, мой ответ дает решение для этого. Если приложение открыто, активность определенно onResume() , а если она не открыта, то onPause();