我有一个在启动时运行的startforeground()服务。我称
startForeground(NOTIFICATION, notification);
,有时它不显示并且导致服务未调用startForeground错误。
我对此进行了研究,并且我的通知ID为13342,但它不起作用。我找到一个答案,说您应该使用较小的数字作为通知ID,因此我以1作为ID。它起初很有效,我认为问题已经解决,但是通知不会再出现。
因此,我添加了一个检查通知是否存在,如果不存在,则在通知ID号上添加1,直到通知显示在通知管理器上为止。现在可以使用,但是直到我将ID有时增加到2有时增加到9时,通知才会显示。
我的问题是为什么会这样?我的应用程序上只有3条通知,并且我确定ID不会冲突。 ID是否与某些内容冲突?
我具有所有必需的通知通道ID,并且通知已完成,我只是更改了通知ID,直到它显示为止。
以下是相关代码:
private void showNotification() {
// code
startForeground(NOTIFICATION, notification);
while(!isNoticationExist(NOTIFICATION)){
NOTIFICATION += 1;
startForeground(NOTIFICATION, notification);
}
}
public boolean isNoticationExist(int NotificationID) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
StatusBarNotification[] notifications = notificationManager.getActiveNotifications();
for (StatusBarNotification notification : notifications) {
if (notification.getId() == NotificationID) {
Timber.d("notification ID exist true: " + NotificationID);
return true;
}
}
Timber.d("notification ID exist false: " + NotificationID);
return false;
}
return true;
}