2015-05-04 73 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