1

在我的应用程序中,我为前台提供服务并向用户显示通知。通过notification.setAutoCancel(false);我设置通知图标始终显示而不自动取消。

实际上我需要这个服务运行很长时间,我想让用户意识到这一点(通过看到他们知道服务仍在运行的通知图标)。

所以不知道我的假设是否正确,只要显示通知图标,就说明服务还在运行,而一旦通知图标消失,就说明服务由于某种原因已经完成。

这是简化的代码:

LongLiveService extends Service{
    private MyThread thread;

    onStartCommand() {
        thread.start();
        createNotification(this);
    }

    createNotification(Context context) {
        // build a notification
        notification.setAutoCancel(false);
        startForeground.invoke(this, notificationID, notification.build());
    }
}


MyThread extends Thread{
    run() {
        // doing something all the time
    }
}
4

1 回答 1

0

你写了:

一旦通知图标消失,这意味着服务由于某些原因已完成。

如果您希望您的通知在运行时一直保留在状态栏中,Service则需要通过 flag 使通知持久化FLAG_ONGOING_EVENT,因此无法将其关闭:

Notification notification = new Notification(...);
PendingIntent pendingIntent = PendingIntent.getActivity(..., Notification.FLAG_ONGOING_EVENT);        
notification.flags = Notification.FLAG_ONGOING_EVENT;
notification.setLatestEventInfo(..., pendingIntent);
mNotificationManager.notify(1, notification);
于 2015-10-07T23:59:32.227 回答