Android 在后台使用移动数据

Android use of mobile data when in background

我在 Android 上开发了一个混合应用程序 运行,它成功地监控了用户的位置并将其作为地图上的移动图标显示给用户。该应用程序的这一部分全部用 javascript 编写,并在 webview 中运行。 webview 还与我的远程服务器通信,以与同一应用程序的其他用户共享用户的位置。

在 Android 牛轧糖之前,即使应用程序在后台运行了几天,这一切都有效。当用户 returns 访问该应用程序时,他们可以看到他们去过的地方以及每个点的时间戳。所有其他应用程序用户都可以看到每个人的位置,即使他们没有积极使用该应用程序也是如此。

从 Android Oreo 开始,我不得不将位置跟踪移动到后台服务以使其在后台继续运行,我已经测试过它即使在后台运行该应用程序时仍然可以正常工作很长一段时间。返回应用程序,用户仍然可以看到他们去过的地方。但是,在 Android Oreo 及更高版本上与服务器的远程通信在后台大约 2 分钟后停止。

请有人解释这是为什么,以及我能做些什么(如果有的话)?

我 运行 的限制是什么?Android 开发人员在哪里记录了这些限制?我已将应用程序设置为不受 settings/network/data 保护程序的限制,这没有区别。

如果我使用 volley 或类似的东西在后台服务中用类似的代码替换 webview XMLHttpRequest 会有什么不同吗?

非常感谢大家的帮助。

虽然我还没有发现我 运行 违反了什么限制,但我发现通过使用 volley 将 http 请求从 web 视图移动到后台服务,服务器会继续更新,无论是否不是应用程序在前台。

到目前为止仅在模拟器中的 Android 8,9 和 10 上进行了测试。即将在真实设备上进行测试