首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在没有setOngoing的情况下启动前台服务(True)吗?

我可以在没有setOngoing的情况下启动前台服务(True)吗?
EN

Stack Overflow用户
提问于 2018-01-10 11:47:29
回答 1查看 1.7K关注 0票数 4

我确实有一项服务是从前台开始的:

代码语言:javascript
运行
复制
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),有些人没有使用。

还有,Android文档上说

前台服务是用户主动意识到的服务,而不是系统在内存不足时杀死的候选服务。前台服务必须为状态栏提供通知,状态栏放在正在进行的标题下。--这意味着,除非服务停止或从前台中删除,否则不能拒绝通知。

而且,在文档中,没有设置setOngoing(true)

代码语言:javascript
运行
复制
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)的影响是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 12:26:29

当您启动一个服务并使用startForeground(int, Notification)在前台运行它时,您传递给get的通知的标志是服务 (参见这里)。

然后,在将通知实际提交到状态栏之前,NotificationManagerService检查是否设置了FLAG_FOREGROUND_SERVICE,如果设置了,它将添加标志事件 (参见这里),这与手动使用setOngoing(true)时设置的标志相同(参见这里)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48186800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档