Android условный PendingIntent в уведомлении?

#java #android

#java #Android

Вопрос:

В настоящее время мое приложение выполняет два действия: всплывающее действие, которое отображает логотип приложения и загружает данные пользователя из удаленной базы данных, а затем основное действие, в котором хранятся все мои фрагменты. Прямо сейчас я зашел в тупик с уведомлениями. Я использую FCM для доставки уведомлений, и это работает нормально, но на самом деле не знаю, что делать с ожидающими намерениями уведомлений. Если приложение закрыто, я не хочу, чтобы оно запускало основное действие, поскольку я загружаю данные из базы данных во всплывающей активности. Таким образом, в основном действии будут отсутствовать данные (в настоящее время он выходит из строя из-за исключений нулевого указателя повсюду). Но если приложение все еще запущено, я не хочу, чтобы заставка запускалась снова. Есть ли какой-то способ включить условное намерение в уведомление?

В качестве альтернативы, это просто плохая практика делать то, что я делаю, с запуском действий из уведомлений? Я ни в коем случае не эксперт по Android, поэтому действительно может быть лучший способ. Я бы предпочел сохранить свой текущий поток активности, однако там, где экран-заставка отвечает за первоначальную загрузку данных. Я надеялся, что есть какой-то способ просто транслировать сообщение по щелчку уведомления, и если какие-либо действия имеют активного слушателя, то он просто будет использовать эти данные.

Ответ №1:

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

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