取消并重新创建新的PendingIntent

时间:2015-05-04 06:09:56

标签: android android-intent android-pendingintent

我正在游戏中创建通知。如果玩家没有玩游戏,我想显示通知。我正在使用以下PendingIntent和警报设置来创建通知。有了这个,我就能够创建通知。

问题:如果玩家玩游戏,我需要取消现有的待处理意图并创建新的待处理意图。我希望Pending Intent标志用于实现?请指教。如果你能对可用的Flags有所了解,那将是一个很大的帮助。

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

1 个答案:

答案 0 :(得分:3)

取消使用PendingIntent创建的FLAG_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);