在android中无限运行服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android中无限运行服务相关的知识,希望对你有一定的参考价值。

我一直在尝试在android中创建一个服务,以便它无限地监听websocket,然后当收到的消息发出通知时。我遇到的最常见的教程是我创建服务的服务和该服务的onDestroy触发广播,然后从广播再次启动服务。但是,当我的应用程序被杀死时,这些技术似乎都没有让我的服务保持活力。

我收到的一些答案是服务无法无限期地工作,那么whatsapp或其他消息应用程序如何始终在后台运行。

答案

我遇到的最常见的教程是我创建服务的那个教程和该服务的onDestroy,触发广播,然后从广播再次启动服务。

这种技术肯定不适用于Android 8.0+。

在android中无限运行服务

这通常是不可能的,并且在Android 8.0+上绝对不可能。你可以做的最接近的事情是运行前台服务(通过startForeground()Notification)并从START_STICKY返回START_REDELIVER_INTENTonStartCommand()。如果您的流程终止,Android应该重新启动您的服务。

我希望当设备在Android 6.0+上进入Doze模式或app standby时,您的代码将无效,除非用户将您的应用添加到电池优化白名单中。

whatsapp或其他消息传递应用程序如何始终在后台运行。

最有可能的是,他们没有。最有可能的是,他们使用的是Firebase云消息传递(FCM)。像WhatsApp这样的品牌也可以与设备制造商达成交易以获得优惠待遇,如果双方都认为这样的交易会是一个好主意。

以上是关于在android中无限运行服务的主要内容,如果未能解决你的问题,请参考以下文章

无限循环 - 延迟 - 单独的线程

在 android 首选项片段中使用 startService()

在服务中运行 AsyncTask - Android

Android 片段未显示在应用程序中

Android 逆向Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )(代码片段

android - 离开应用程序时保持谷歌地图片段在位置上放大