您为所有通知使用相同的通知ID(值始终为1)。您可能应该将通知ID分离到单独的单例类中:
public class NotificationID { private final static AtomicInteger c = new AtomicInteger(0); public static int getID() { return c.incrementAndGet(); }}然后在代码中使用
NotificationID.getID()代替
NOTIFICATION_ID。
编辑:正如@racs在评论中指出的那样,如果您的应用程序进程被杀死,上述方法不足以确保行为正确。至少
AtomicInteger应从某些活动的保存状态(而不是从0开始)初始化的初始值。如果通知ID在应用程序的重新启动期间需要唯一(同样,应用程序进程可能会被终止),则最新值应在每次增量后保存在某个位置(可能保存到共享首选项),并在应用启动时恢复。



