API Level 24 - Android 7.0 Nougat中的前台服务

4
我的问题与 API LEVEL 24 - Android 7.0 Nougat 相关,我正在尝试找到最合适且具有未来性的方法来启动一个粘性前台服务。 总结一下: - 服务需要从活动中在按钮按下后启动 - 将创建通知(粘性通知将由通知标志处理)
在 API 级别 26 中,我们可以调用 startForegroundService(service, notification),服务会自动与通知相关联。但是,在 API 级别 24 中,服务是通过调用 startService(service) 启动的,并通过调用 NotificationManagerCompat 的 notify 方法显示通知。我们如何让操作系统知道通知与服务相关,以便服务被视为前台服务,并且操作系统不会自行终止服务。
注意:我想要这种实现方式是为了具有未来性。该服务需要位置更新,从 API Level 26 开始,只有前台服务(带有粘性通知)才能接收实时更新。(https://developer.android.com/about/versions/oreo/background-location-limits)
1个回答

4
如何让操作系统知道通知与服务相关,从而将服务视为前台服务?
在服务中调用startForeground()方法,并提供Notification参数。即使在Android 8.0及以上版本中也需要这样做。
操作系统不会自动杀死服务的说法是错误的。使用该方法只是减少Android终止进程的可能性。

StartForeground在API级别24上不可用。这是我的问题。 - AlexandrosD
1
@AlexandrosD:startForeground()自API Level 5以来就存在:https://developer.android.com/reference/android/app/Service#startforeground - CommonsWare
2
哦,我明白了 - startForeground 是一个服务方法,所有与通知相关的代码都需要由服务管理 - 对于混淆感到抱歉。 - AlexandrosD
有没有人知道一种实现服务的方法,可以让它永远不会被 Android 终止? - ThePartyTurtle
@ThePartyTurtle:构建自己的自定义ROM并将您的逻辑实现为标准Linux守护程序。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接