2015-05-04 70 views
1

我在我的遊戲中創建通知。如果玩家在某段時間沒有玩遊戲,我想顯示通知。我正在使用下面的PendingIntent進行警報設置來創建通知。有了這個,我能夠創建通知。取消並重新創建新的PendingIntent

問題:如果玩家玩遊戲,我需要取消現有的待定Intent並創建一個新的Pending Intent。我希望Pending Intent標誌將用於實現?請指教。如果您可以對可用的標誌進行一些說明,它也會有很大的幫助。

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
+0

爲什麼你需要取消'PendingIntent'並創建一個新的?請提供更多數據,以便我可以正確回答您的問題。 –

+0

基本上我會在用戶離開遊戲時設置待定的意圖。這會在5天后觸發通知。如果用戶在5天內玩過遊戲,我應該取消在5天之後計劃成功的pendingIntent。在此之後,當玩家退出遊戲時,我將再次設置等待的意圖,這將在5天后觸發。 – iappmaker

+0

所以你沒有使用'PendingIntent'來創建'Notification'。您正在將'PendingIntent'發送到'AlarmManager'來設置鬧鐘。正確? –

回答

2

取消已創建一個PendingIntentFLAG_ONE_SHOT的唯一辦法是舉行對到PendingIntent的引用,然後調用上的參考cancel()

如果您不再有參考,則不能取消此PendingIntent。你不需要使用FLAG_ONE_SHOT,所以我不會這麼做。它會導致比解決問題更多的問題。

根據您對評論中的問題的回答,您想要做的是取消警報。您無需取消PendingIntent。要取消報警,只是這樣做:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.cancel(pendingIntent); 

如果你沒有在任何PendingIntent「臨時演員」,那麼你可以創建你PendingIntent這樣的:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

如果你有「羣衆演員」,在需要的PendingIntent被替換時,報警復位,您可以創建PendingIntent這樣的:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 
          PendingIntent.FLAG_UPDATE_CURRENT); 
+1

謝謝你理解我的問題和你明確的答案 – iappmaker