在 Android 浏览器最小化状态下继续运行 Web Ajax 调用

问题描述 投票:0回答:1

我有一个简单的ajax调用

var tid = setInterval(mycode, 2000);
function mycode() {
            $.ajax({
                url:'/ajx.php',
                type: "GET",
                success: function (data) {
                },
            }); 
}

我希望它即使在 Android 浏览器最小化时也能继续运行。 目前它仅在屏幕上打开浏览器时才有效。

除chrome/mozilla之外的其他浏览器是否可以保持运行?

任何帮助!!

javascript android ajax web-applications
1个回答
0
投票

你不能。首先,当在后台时,即使 Android 中的服务也只有有限的执行时间(它们将在两分钟后被杀死)。但您不会处于服务中 - 您将处于活动中。当活动进入后台时,它们通常会取消所有计时器和线程。即使他们不这样做,他们也会很快因为资源而被杀死。

基本上,您想要的并不是 Android 的工作方式。您可以使用实际的应用程序(而不仅仅是浏览器页面)和前台服务来更接近这一点,但即使如此,您最终也会被杀死。即使这样,如果手机屏幕关闭并且手机进入打瞌睡(一种省电模式,应用程序每 15 分钟只允许短暂执行一次),您也将无法工作。

在 Android 上执行此操作的最佳方法是根本不进行轮询。即使对于网站来说,不断轮询服务器也被认为是一种反模式,就 CPU 时间、客户端和服务器的电力成本以及您自己的网络成本而言,这是效率最低的做事方式。相反,请研究网络套接字(或本机应用程序的推送消息)并使用它来通知客户端何时有新数据,而不是强迫客户端不断检查是否有新数据。通过推送消息,您可以解决整个 Doze 模式问题,因为高优先级推送消息会绕过 Doze。

© www.soinside.com 2019 - 2024. All rights reserved.