Context.startForegroungService 表示我们要启动前台服务。但我们可以通过 Context.startService 启动服务,并在服务中调用 startForeground 转为前台服务。
它们之间有什么行为差异吗? 如果我们不调用startForegroundService而是将一个正常启动的服务转为前台,我们会损失什么?
通过在服务中调用
startService()
,然后调用 startForeground()
,您可以手动启动服务,然后将其提升为前台服务。此方法通常用于与旧版 Android 版本兼容。
顺便说一下,Android Oreo(API级别26)中引入了
startForegroundService()
来直接启动前台服务。它在一次调用中结合了启动服务和使其成为前台服务,从而简化了流程。显然是为 Oreo 及以上版本保证兼容性。