取消并重新创建新的 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);
我正在我的游戏中创建通知。如果玩家有一段时间没有玩游戏,我想显示通知。我正在使用以下带有警报设置的 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);