android - 如何在 Oreo 中长时间运行后台服务?

标签 android android-8.0-oreo

Android Oreo 对运行后台服务施加了很多限制。 Oreo 中的服务现在不像以前那样正常运行。

但是如果我必须长时间在后台运行服务怎么办?

我正在开发一个应用程序来在用户摇动手机时启动手电筒。为此,我必须将传感器监听器代码放入服务中。

如何防止android系统不杀服务

PS:我不想通过通知启动前台服务。

最佳答案

How do I prevent android system to not kill the service.

总结评论:使用前台服务,在专用 channel 上发送通知, channel 设置为 IMPORTANCE_DEFAULT。建议用户他们可以将该 channel 静音(例如,长按通知栏中的 Notification)。使用专用 channel 意味着您仍然可以在其他 channel 上发出通知。您的通知也应该有用:

  • 如果用户想要将其关闭一段时间,请执行“停止”操作以停止您的服务

  • 点击通知本身会导致您配置应用行为的 Activity

I don't want to start a foreground service with a notification.

那么您很可能无法编写您的应用。

我不能排除 Android 8.x 中存在某些漏洞的可能性,这些漏洞可能会被利用来提供无限期服务。事实上,我认为很可能有东西漂浮在那里。然而,这显然违背了谷歌的 Intent ,意思是:

  • 在没有 Google 认为有效的理由的情况下利用该技术可能会导致您的应用被 Play 商店禁止(如果您计划以这种方式分发应用)

  • 该错误可能会在未来版本的 Android 中修复,与 Google 进行军备竞赛往往是一个失败的提议

有足够多的“空中手势”应用程序四处飘荡(即,根据摇动来做事),理想情况下,谷歌会为其添加一些专用的低功耗 API。例如,他们可以向 JobScheduler 添加功能,以允许您注册摇动事件并在这种情况下调用您的 JobService,就像它们允许您注册ContentProvider 中的更改。我不知道他们是否会提供这样的 API,但如果需要,您可以为其提交功能请求。

关于android - 如何在 Oreo 中长时间运行后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996560/

相关文章:

android - Active Android 设备上的 SMS 发送权限

java - 如何解析 JSON 回复

android - 如何在输入文本时更改文本编辑控件的颜色并在输入完成后再次更改颜色

java - 使用相机检测真实物体。使用相机寻找真实物体的可能性

android - 如何在 Oreo 中创建下载进度通知?

android - 前台服务在 didExitRegion 上重新启动

机器人-O : app crash with webview

安卓 8 : firebase default notification icon not showing up

java - 尝试调用方法时出错 - 无法应用于 ()

android - Gradle:Android支持版本冲突