如何避免同样的通知在android状态栏中多次创建?

时间:2013-10-08 12:11:54

标签: android

我正在android中开发事件提醒应用程序。在我的应用程序中,用户可以设置事件时间,并且我在指定的时间生成状态栏通知。但是在我的应用程序中,它在状态中多次生成相同的通知(通知ID)吧。请帮我怎么避免?

PendingIntent contentIntent = PendingIntent.getActivity(context, 0,i, PendingIntent.FLAG_ONE_SHOT);
notification = new Notification(R.drawable.logo, "Notification",System.currentTimeMillis());
notification.setLatestEventInfo(context,strText, "@"+strDate+ strCorrectTime,contentIntent);
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults|=Notification.DEFAULT_ALL;
mNotificationManager.notify(Integer.parseInt(intent.getExtras().get("NotifyCount").toString()), notification);

enter image description here这是编码.. enter image description here

2 个答案:

答案 0 :(得分:2)

不要将System.currentTimeMillis()用作通知ID。 而是定义一个常量:

public static final long TRAY_ID = 237864827364; // let your IDE generate it

并在每个mNotificationManager.notify(..)

之前使用此功能
( (NotificationManager)getSystemService( Context.NOTIFICATION_SERVICE ) ).cancel( TRAY_ID );

答案 1 :(得分:0)

系统时间应该正常工作。请检查你的BroadcastReceiver调用了多少时间。 它可能被称为两次。 并使用for unique id进行通知。

int notitime=new Random(System.currentTimeMillis()).nextInt();

mNotificationManager.notify(notitime, notification);

notitime是通知的唯一ID。