首页 文章

如何在奥利奥长期运行后台服务?

提问于
浏览
4

Android Oreo对运行后台服务施加了很多限制 . 现在服务在Oreo中的表现与以前一样 .

但是,如果我必须在后台运行很长一段时间的服务,该怎么办呢?

我正在开发一个应用程序,当用户摇动手机时启动手电筒 . 为此,我必须将Sensor侦听器代码放在服务中 .

如何防止android系统不杀死服务 .

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

2 回答

  • 8

    如何防止android系统不杀死服务 .

    总结注释:使用前台服务,在专用通道上发布通知,通道设置为 IMPORTANCE_DEFAULT . 告知用户他们可以将该 Channels 静音(例如,长按通知阴影中的 Notification ) . 使用专用 Channels 意味着您仍然可以在其他 Channels 上发送通知 . 您的通知也应该有用:

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

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

    我不想通过通知启动前台服务 .

    然后很可能你不能写你的应用程序 .

    我不能排除Android 8.x中可能被利用来获得无限期服务的一些错误的可能性 . 事实上,我认为很可能会有一些东西漂浮在那里 . 但是,这显然违背了谷歌的意图,这意味着:

    • 利用这种技术,没有谷歌认为有效的理由,可能会让你的应用程序被Play商店禁止,如果这是你计划分发的方式

    • 该错误可能会在Android的未来版本中修复,与谷歌的军备竞赛往往是一个失败的主张

    有足够的"air gesture"应用程序浮动(即基于摇动做事情),理想情况下,谷歌会为它添加一些专用的低功耗API . 例如,他们可以为 JobScheduler 添加功能,以允许您注册摇动事件,并在这种情况下调用 JobService ,就像它们允许您注册 ContentProvider 中的更改一样 . 我不知道他们是否会提供这样的API,但如果你愿意,你可以为它提交功能请求 .

  • 0

    你将无法在Oreo中长时间运行后台服务,因为有行为改变,现在Oreo优化系统内存,电池等,它会杀死后台服务,解决你应该使用前台服务的问题 .

    看看 Background execution limits https://developer.android.com/about/versions/oreo/android-8.0-changes

    希望这有助于理解问题....

相关问题