取消并重新创建新的 PendingIntent

Cancel and Re-create new PendingIntent

我正在我的游戏中创建通知。如果玩家有一段时间没有玩游戏,我想显示通知。我正在使用以下带有警报设置的 PendingIntent 来创建通知。有了这个我就可以创建通知了。

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

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

取消使用 FLAG_ONE_SHOT 创建的 PendingIntent 的唯一方法是保留对该 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 中没有任何 "extras",那么您可以像这样创建 PendingIntent

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

如果您在 PendingIntent 中有 "extras" 需要在重置闹钟时替换,您可以像这样创建 PendingIntent

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