您可以制作多少个Android通知?

时间:2012-07-11 05:33:14

标签: android alarmmanager android-notifications

我目前正在尝试测试我的代码,以确保正确设置通知。我这样做的方法是设置3个不同的警报,每隔一分钟显示一次通知。但问题是,1有效,但我从未见过其他两个。我的代码:


String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);

    Notification.Builder builder = new Notification.Builder(context)
                                    .setTicker(intent.getStringExtra("event")+"-"+intent.getStringExtra("location"))
                                    .setWhen(System.currentTimeMillis())
                                    .setContentTitle(intent.getStringExtra("event"))
                                    .setContentText(intent.getStringExtra("time_start")+"-"+intent.getStringExtra("location"))
                                    .setSmallIcon(R.drawable.ic_launcher);
    Notification notification = builder.getNotification();
    mNotificationManager.notify(intent.getIntExtra("id", 0),notification);

它所获得的意图中的额外“id”是递增数字,所以像1,2,3一样。我正在使用AlarmManager设置警报。我认为只要notify中的第一个参数是唯一的,它就会显示通知,但它还没有。有什么理由吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

由于NoBug在PendingIntent上没有真正重新创建一个新实例,而只是检索到最后一个实例,我进行了一点挖掘后,我发现它不仅仅是说PendingIntent.FLAG_CANCEL_CURRENT。当将其用作getBroadcast()getActivity()中的参数时,它所做的只是使用旧参数并对其进行刷新。它不是覆盖它传递的Intent的旧实例,而是仍然使用它,只是更改附加内容。但即便如此,它实际上并没有按照某种原因行事,至少在我的情况下,目标是一个接一个地弹出通知,大多数是相同的额外内容,当然是减去时间。

所以我发现使用intent.setAction("com.example"+System.currentTimeInMillis)可以完成工作。这样做可以完全区分Intent,所以当你创建一个新的时,它实际上只是一个不同的动作而不管PendingIntent。我真的会建议任何人真正详细说明我的这个理论,因为它只是一个试错法的猜测。