在api 28之前,我可以简单地启动后台服务并连续监听套接字连接中的任何传入数据 但是在api 28的最新更改中,如下所示https://developer.android.com/about/versions/oreo/background#services 除非它仅涵盖以下情况之一,否则我将无法在android 9中启动后台服务
在某些情况下,后台应用会放置在临时 进入白名单几分钟。当应用程序进入白名单时,它会 可以不受限制地启动服务及其后台服务 被允许运行。当应用程序被列入白名单时 处理用户可见的任务,例如:
处理高优先级的Firebase云消息(FCM)消息。
接收广播,例如SMS / MMS消息。 从通知中执行PendingIntent。 在VPN应用提升自身功能之前启动VpnService 前景。
我发现的唯一选择是将服务作为前台启动。 我已经找到了使用JobScheduler或WorkManger的替代方法,但我认为它们不能满足我的要求
所以我的问题是,除了使用前台服务之外,还有其他方法可以监听针对android 9(api 28)的套接字连接吗?
答案 0 :(得分:0)
好问题。我也通过服务幸存下来。前景服务也不是Android 9的更好解决方案。由于系统资源的原因,前景服务也可能被杀死。
最好使用WorkManager
。它会给你一个不错的味道。
尝试一下。
答案 1 :(得分:0)
我使用带有工作管理器的android前台服务。如果您担心服务的关闭,请使用定期工作管理器检查服务的运行状态。就像每10分钟或1小时这样。因为工作管理器不兼容按照像套接字一样工作的逻辑,您可以定期执行此操作,也可以执行一次。
Soo
Socket listen every time
Work manager work by periodicly or one shot
Service works every time;
每次工作者和任何时候的收听者的最终结果都非常适合像Firebase推送通知服务。
for a good working cycle
Service Continuously works and listens with a socket inside.
The work manager checks periodically whether the service is running, in case the service is closed.