我在
the docs中读到Context.startForegroundService()有一个隐含的承诺,即启动的服务将调用startForeground().但是,由于Android O即将推出后台和前台服务的更改,与使用较旧的startService()方法相比,是否还有其他性能改进,或者它是最佳实践?
解决方法
它既不是性能改进,也不是好处,也不是最佳实践.
因此,如果您的应用程序在后台(如果它也位于前台,欢迎您也这样做),您必须使用Context.startForegroundService(Intent)而不是前一个startService(Intent).然后,服务必须在启动后的前5秒内调用startForeground(int,Notification),否则系统将停止服务.
还应该提到的是,有一些信息表明从后台应用程序启动带有startService(Intent)的服务的旧方法仍适用于当前版本的Android Oreo,但很快就会修复.
因此,从API 26开始,只要想要启动前台服务,就要使用新的Context.startForegroundService(Intent)方法而不是startService(Intent).