1

我正在一個具有鬧鐘功能的android項目。多個全屏android的通知在同一時間不堆積

我爲每個警報實例安排一個intentService(例如在下午9點觸發),這個intentService構建通知並顯示它。該通知包含一個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功能,則根本不需要使用IntentServiceNotification。只要AlarmManager在火災時啓動您的Activity

你不想構建任務堆棧,這太複雜了。如果您有多個可同時觸發的警報,則可以讓AlarmManager每次啓動相同的Activity。將此Activity的啓動模式設置爲singleTop(在清單中),以便如果Activity在報警觸發時已經顯示,則不會在現有報警的頂部創建另一個Activity的實例,而是將交付Intent通過在Activity的現有實例上調用onNewIntent()。在onNewIntent()中,您可以將Intent的數據(額外)保存在用戶完成當前顯示的Activity時將要處理的隊列中。爲此,只需覆蓋onBackPressed(),以便當用戶按下BACK按鈕完成當前的Activity時,可以檢查隊列中是否有其他警報正在等待。如果沒有,您可以致電super.onBackPressed()完成Activity。如果隊列中有任何內容,則可以刪除隊列中的第一個元素,並將其顯示在Activity中。繼續這樣做,直到隊列爲空。

+0

嘿大衛,謝謝你的迴應。意圖服務的原因是使用全屏意圖是用戶可選功能。這是實施它的正確方法嗎?我仍然希望他們得到通知,而不是屏幕喚醒。 –

+0

如果您願意,您仍然可以使用「通知」,但解決方案應該可以在任何情況下工作。 '通知'應該啓動'活動',如果屏幕上已經存在報警,應該排隊報警。 –