Используйте постоянное уведомление, чтобы позволить пользователю вернуться к работающему приложению Android

Я занимаюсь разработкой приложения с многочисленными активностями. Я хотел бы создать постоянное уведомление, которое (более или менее) гласит: «AppName - Return to AppName», которое будет присутствовать при каждом запуске моих фоновых служб. Создание и удаление уведомления не было проблемой.

Теперь пользователь может находиться на любом из нескольких экранов / действий, выйти из приложения и затем повторно войти в приложение через уведомление. Проблема заключается в , у уведомления должно быть намерение, которое запускает предопределенную активность . Я хочу, чтобы уведомление повторно входило в приложение в независимо от того, что Activity находится наверху стека истории .

Моя первая попытка уродливого обходного пути состояла в том, чтобы выполнить действие (давайте назовем его «returnFromNotify» ) чья единственная работа должна была "закончить" сам по себе в "onCreate". Уведомление откроет «returnFromNotify» в области истории приложений, которая затем немедленно удалит себя, отправив пользователя обратно в предыдущее состояние истории в стеке приложений. Кажется, это работает ... если пользователь не использовал "назад", чтобы полностью выйти из приложения. Затем, когда они нажимают на уведомление, «returnFromNotify» загружается, а затем завершается, отправляя их обратно на домашний экран (так как в стеке операций для приложения нет операций).

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

Есть предложения или предложения для новичка в Java / Android? FYI, Моя основная история связана с языками на основе сценариев.

9
задан Shane 31 August 2010 в 17:34
поделиться

2 ответа

Хорошо, я считаю, что нашел удовлетворительный обходной путь для моего конкретного случая. Я добавил статическое целое число к моей «mainActivity», и каждый раз, когда он запускается «onCreate», он увеличивает целое число. Каждый раз, когда запускается "onDestroy", он уменьшается.

В моем «returnFromNotify» я смотрю на статическое целое число, чтобы увидеть, больше ли оно 0.Если это так, я предполагаю, что существует активная «mainActivity», и что выполнение «finish» внутри «returnFromNotify» вернется туда. В противном случае он предполагает, что пользователи «отступили», завершает работу, а затем использует «startActivity» для запуска нового экземпляра «mainActivity».

Это не универсальное решение, но для моих целей, думаю, будет достаточно. Я по-прежнему открыт для других ответов, и если кто-то может пробить брешь в моей логике, пожалуйста, сделайте это — конструктивная критика приветствуется. Спасибо.

3
ответ дан 4 December 2019 в 20:21
поделиться

Я думаю, что нет простого способа сделать это, но вместо добавления счетчика в mainActivity я бы расширил Application:

Базовый класс для тех, кому нужно поддерживать глобальное состояние приложения. Ты можете предоставить свою собственную реализацию указав его имя в своем AndroidManifest.xml тег, который приведет к тому, что этот класс будет создается для вас, когда процесс для вашего приложения/пакета созданный.

Я бы продумал логику и создал такой метод, как:

public Intent getIntentForLastActivityShown();

который будет вызываться при щелчке элемента уведомления.

1
ответ дан 4 December 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: