我确实有一个在前台启动的服务:
val notification = NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_stat_notify)
.setContentTitle(title)
.setTicker(message)
.setStyle(NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message)
.setContentIntent(pendingIntent)
.build()
startForeground(Notifications.Id.RUNNING, notification)
请注意,我没有使用setOngoing(true)
.
我在 StackOveflow 上找到了一些示例和答案,有些人正在使用setOngoing(true)
,有些人没有。例子:
- https://stackoverflow.com/a/6397982/1945754
- https://stackoverflow.com/a/47549638/1945754
- https://stackoverflow.com/a/20142620/1945754
此外,Android 文档说:
前台服务是用户主动了解的服务,并且不是系统在内存不足时终止的候选服务。前台服务必须为位于 Ongoing 标题下的状态栏提供通知。这意味着除非服务停止或从前台删除,否则通知不能被解除。
而且,在文档中,setOngoing(true)
没有设置:
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent =
PendingIntent.getActivity(this, 0, notificationIntent, 0);
Notification notification =
new Notification.Builder(this, CHANNEL_DEFAULT_IMPORTANCE)
.setContentTitle(getText(R.string.notification_title))
.setContentText(getText(R.string.notification_message))
.setSmallIcon(R.drawable.icon)
.setContentIntent(pendingIntent)
.setTicker(getText(R.string.ticker_text))
.build();
startForeground(ONGOING_NOTIFICATION_ID, notification);
问题
省略的影响是setOngoing(true)
什么?