1

Я работаю над проектом Android, у которого есть будильник, похожий на функциональность.Несколько полноэкранных уведомлений Android в то же время не складываются

Я планирую намерениеУслуги для каждого экземпляра будильника (например, срабатывает в 9 вечера, например.), Этот намерениеService создает уведомление и отображает его. Уведомление включает fullScreenIntent, который работает как ожидалось и запускает действие. Я использую следующий код, чтобы сделать это:

alarmActivityIntent = new Intent(this, AlarmActivity.class); 
PendingIntent alarmActivityPendingIntent = PendingIntent.getActivity(this, alertSchedule.getIntentId(), alarmActivityIntent, PendingIntent.FLAG_CANCEL_CURRENT); 
mBuilder.setFullScreenIntent(alarmActivityPendingIntent, true); 
Notification mNotification = mBuilder.build(); 
mNotificationManager.notify(alertSchedule.getIntentId(), mNotification); 

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

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

Возможно ли сгруппировать эти уведомления?

ответ

0

Если вы используете функцию полного экрана Intent, вам не нужно использовать IntentService или Notification. Просто запустите AlarmManagerActivity, когда он стреляет.

Вы не хотите создавать стек задач, это слишком сложно. Если у вас есть несколько аварийных сигналов, которые могут срабатывать одновременно, вы можете получить AlarmManager каждый раз с тем же Activity. Установите режим запуска этого Activity на singleTop (в манифесте), так что если Activity уже показывает, когда срабатывает будильник, он не будет создавать еще один экземпляр Activity поверх существующего, но вместо этого отправит Intent путем вызова onNewIntent() на существующий экземпляр Activity. В onNewIntent() вы можете сохранить данные (дополнительные) Intent в очереди, которая будет обработана, когда пользователь закончит отображаемое в данный момент Activity. Для этого просто переопределите onBackPressed(), чтобы пользователь нажал кнопку BACK, чтобы завершить текущий Activity, вы можете проверить, есть ли в очереди дополнительные тревоги. Если их нет, вы можете просто позвонить super.onBackPressed(), чтобы закончить Activity. Если в очереди есть что-то, вы можете удалить первый элемент в очереди и отобразить это в своем Activity. Продолжайте делать это, пока очередь не будет пустой.

+0

Эй, Дэвид, спасибо за ответ. Причина службы намерения заключается в том, что использование полноэкранного намерения является необязательной функцией пользователя. Будет ли это правильным способом его реализации? Я все еще хочу, чтобы они получили уведомление, а не экран. –

+0

Вы все равно можете использовать «Уведомление», если хотите, но решение должно работать в любом случае. «Уведомление» должно запускать «Активность», которая должна сигнализировать в очереди, если на экране уже есть сигнал тревоги. –