我现在使用的代码是这样的:

private void removeNotification(){
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && notificationManager != null) {
        notificationManager.deleteNotificationChannel(Constants.CHANNEL_ID.CHANNEL_ID);
    }
    if (notificationManager != null) {
        notificationManager.cancel(Constants.NOTIFICATION_ID.SERVICE_ID);
    }
    Log.i(TAG, "Notification removed!");
}


但是我的代码和stopForeground(true);有什么区别?
因为它们都删除了通知。

服务销毁时应该使用哪一个?

编辑

通知代码:

 NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, Constants.CHANNEL_ID.CHANNEL_ID);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel notificationChannel =
                new NotificationChannel(
                        Constants.CHANNEL_ID.CHANNEL_ID,
                        "Media PlayBack",
                        NotificationManager.IMPORTANCE_LOW);
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.createNotificationChannel(notificationChannel);
        notificationBuilder.setChannelId(Constants.CHANNEL_ID.CHANNEL_ID);
    }
    notificationBuilder.setShowWhen(false)
            .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle().setMediaSession(mMediaSessionCompat.getSessionToken()).setShowActionsInCompactView(0, 1, 2))
            .setSmallIcon(android.R.drawable.stat_sys_headset).setContentTitle(activeSong.getTitle()).setContentText(activeSong.getArtist())
            .addAction(R.drawable.ic_action_prev_white, null, playbackAction(3))
            .addAction(notificationAction, null, play_pause_action).addAction(R.drawable.ic_action_next_white, null, playbackAction(2))
            .addAction(R.drawable.ic_close, null, playbackAction(4))
            .setColor(getResources().getColor(R.color.theme1));

    notificationBuilder.setOngoing(true);

    Notification notification = notificationBuilder.build();
    startForeground(Constants.NOTIFICATION_ID.SERVICE_ID, notification);

最佳答案

我现在使用的代码是这个


不要删除频道。


  但是我的代码和stopForeground(true)有什么区别? ?


stopForeground(true)仅在使用startForeground()时有效。


  服务销毁时应该使用哪一个?


如果使用startForeground(),请使用stopForeground()。如果直接使用Notification引发NotificationManager,则使用cancel() Notification NotificationManager

关于java - 服务停止时如何删除通知?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56475942/

10-10 07:52