java - 对前台服务使用 Context.startForegroundService(Intent) 而不是 Context.startService(Intent) 有什么好处吗?

标签 java android performance android-service android-8.0-oreo

我读入了the docs Context.startForegroundService() 隐含 promise 启动的服务将调用 startForeground()。然而,由于 Android O 正在对后台和前台服务进行更改,与使用旧的 startService() 方法相比,它是否有任何其他性能改进,或者它只是 future 的最佳实践?

最佳答案

它既不是性能改进,也不是 yield ,也不是最佳实践。

从 API 26 开始,系统不允许后台应用创建后台服务。

因此,如果您的应用在后台(如果它也在前台也欢迎您这样做),您必须使用Context.startForegroundService(Intent) 而不是之前的 startService(Intent)。服务必须在启动后的前 5 秒内调用 startForeground(int, Notification),否则系统将停止服务。

还应该提到的是,有信息表明从后台应用程序使用 startService(Intent) 启动服务的旧方法在当前版本的 Android Oreo 上仍然有效,但它将是很快修复。

因此,从 API 26 开始,无论何时您想要启动前台,您都希望使用新的 Context.startForegroundService(Intent) 方法而不是 startService(Intent)服务。

关于java - 对前台服务使用 Context.startForegroundService(Intent) 而不是 Context.startService(Intent) 有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525214/

相关文章:

java - putExtra()、getStringExtra() - 为什么它不起作用?

python - 基于字典高效替换数组中的元素 - NumPy/Python

java - 我们可以在 java 中实现的性能改进功能列表

Java 方法引用实例化

java - ElasticSearch Java API 从查询生成器获取不同的值

android - 如何在Flutter中获取复杂的Json对象?

后台进程导致的Android线程问题

performance - Neo4j 删除图大数据

Java 数据结构,用于在运行时基于大数据集提供随机 <String><Float> 对

java - 如何检查当前Java版本是否高于1.6