我正在使用后台服务开发Android应用。服务正在自己的流程中运行(如com.example.app:extProccess
)。服务创建WebSockets连接。但是在服务启动后不到1分钟后,WebSockets就会断开连接,但服务仍然存在(不会被Android杀死)。在20-30分钟后,连接正在恢复。
似乎设备已进入Doze,但很快就会进入。 这仅在一些Nougat设备上观察到。
如果我阻止此应用服务的电池优化(android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
),并且网页套件正常工作而不断开连接。
我的问题是,如果我的应用程序位于前台,Android会如此迅速地限制网络?那么如何在不使用android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
的情况下为后台服务保持网络?
答案 0 :(得分:3)
从Android API 21(Lollipop)开始,Google开始更多地关注电池优化。问题出在任何服务上。解决此问题的一种方法是使用Job Scheduler进行后台任务(可用文档here)。此外,任何使用Android资源的任务都将由Android Framework终止。针对您的特定用例的唯一解决方案是优化您的代码或使用" IGNORE BATTERY OPTIMISATIONS"就像你一样。