在api 28的后台服务中处理套接字连接



在api 28之前,我可以简单地启动后台服务,并持续监听套接字连接以获取任何传入数据然而,在这里显示的api 28的最新变化中https://developer.android.com/about/versions/oreo/background#services我不能再在android 9中启动后台服务,除非它只涵盖以下情况之一

在某些情况下,后台应用程序被放置在临时白名单几分钟。当应用程序在白名单上时可以无限制地启动服务及其后台服务被允许运行。当应用程序处理用户可见的任务,例如:

处理高优先级Firebase云消息(FCM(消息
接收广播,例如短信息/彩信。从通知中执行PendingIntent。在VPN应用程序向前景。

我找到的唯一选项是将服务作为前台启动。我已经找到了一些替代方案,比如使用JobScheduler或WorkManger,但我认为它们不能满足我的要求

所以我的问题是,除了使用前台服务之外,还有其他方法可以监听针对android 9(api 28(的套接字连接吗?

好问题。我也在服务中幸存下来。前景服务也不是一个更好的Android 9解决方案。由于系统资源环境的原因前台服务也可能被杀死。

你最好使用WorkManager。它会给你一种很好的味道。

试试看

我使用了带有工作管理器的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.

最新更新