通知ID不会显示在startforground

时间:2018-10-09 11:49:11

标签: android notifications android-service notificationmanager

我有一个在启动时运行的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;
}

0 个答案:

没有答案