我正在游戏中创建通知。如果玩家没有玩游戏,我想显示通知。我正在使用以下PendingIntent和警报设置来创建通知。有了这个,我就能够创建通知。
问题:如果玩家玩游戏,我需要取消现有的待处理意图并创建新的待处理意图。我希望Pending Intent标志用于实现?请指教。如果你能对可用的Flags有所了解,那将是一个很大的帮助。
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
答案 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);