Android中的notificationManager.notify和startForeground有什么区别?

时间:2019-12-22 14:23:16

标签: android notifications

我只是想知道Android中的notificationManager.notify和startForeground有什么区别。

1 个答案:

答案 0 :(得分:0)

使用NotificationManager.notify可以根据需要发布任意数量的通知更新,包括通过Noticiation.Builder.setProgress对进度条进行的调整,这样,您仅向用户显示一个通知,而该通知是用户需要的startForeground

当您想通过startForeground()更新通知集时,只需构建一个新的通知,然后使用NotificationManager来通知它。

关键是要使用相同的通知ID。

我没有测试重复调用startForeground()来更新通知的情况,但是我认为使用NotificationManager.notify会更好。

更新通知不会将服务从前台状态中删除(只能通过调用stopForground来完成。

这里是一个例子:

private static final int notif_id=1;

@Override
public void onCreate (){
    this.startForeground();
}

private void startForeground() {
        startForeground(notif_id, getMyActivityNotification(""));
}

private Notification getMyActivityNotification(String text){
        // The PendingIntent to launch our activity if the user selects
        // this notification
        CharSequence title = getText(R.string.title_activity);
        PendingIntent contentIntent = PendingIntent.getActivity(this,
                0, new Intent(this, MyActivity.class), 0);

        return new Notification.Builder(this)
                .setContentTitle(title)
                .setContentText(text)
                .setSmallIcon(R.drawable.ic_launcher_b3)
                .setContentIntent(contentIntent).getNotification();     
}
/**
this is the method that can be called to update the Notification
*/
private void updateNotification() {

                String text = "Some text that will update the notification";

                Notification notification = getMyActivityNotification(text);

                NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                mNotificationManager.notify(notif_id, notification);
}

您可以在NotificationManager.notify here

上找到更多示例和说明。

我也建议您参考此page,以了解有关startForeground的更多信息

可以here找到startForeground的用法