或者,您可以使用以下代码生成PendingIntent:
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
来自doc for PendingIntent.FLAG_UPDATE_CURRENT :
PendingIntent.FLAG_UPDATE_CURRENT
如果描述的PendingIntent已经存在,那么保留它,但用这个新Intent中的内容替换它的额外数据。如果您要创建只有附加内容更改的意图,并且不关心接收到您之前的PendingIntent的任何实体将能够使用您的新附加功能启动它,即使它们未明确赋予它,也可以使用此功能。
您传递的是相同的ID。在这种情况下,从这个时间做出一个独特的id:
int iUniqueId = (int) (System.currentTimeMillis() & 0xfffffff);
并把它作为这个:
PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),iUniqueId, intentForNotification, 0);
对于任何寻求最佳方法的人,你需要通过 的 PendingIntent.FLAG_UPDATE_CURRENT 强> 作为最后一个参数,如下所示
你甚至不需要提供新的唯一身份证。
您正在为待处理的强制发送相同的请求代码。 改变这个:
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
至:
PendingIntent contentIntent = PendingIntent.getActivity(context, UNIQUE_INT_PER_CALL, notificationIntent, 0);
如果发送相同的参数,则不会创建意图。它们被重用了。
所有通知的请求代码均为0。更改以下行:
附:
PendingIntent contentIntent = PendingIntent.getActivity(context, new Random().nextInt(), notificationIntent, 0);