Javascript Web应用程序停止工作

Javascript Web应用程序停止工作,javascript,android,timer,Javascript,Android,Timer,这个问题有点含糊,因为我不知道该怎么表达。我完全接受这一点,但如果有人有洞察力,这将是最有帮助的 我正试图确定是我的web应用程序代码出了错,还是继承了移动web应用程序的本质(尤其是在Android设备上) 我有这个网络应用 它是使用asp.net、C#、JavaScript和Jquery设计的 我有一页,里面有两个div。 第一个div显示一个登录页面(即用户名和密码)。 登录时,此div隐藏,显示第二个div 这个第二部分“启动”了一个计时器,它不时地从我的服务器下载一个图像 我使用Set

这个问题有点含糊,因为我不知道该怎么表达。我完全接受这一点,但如果有人有洞察力,这将是最有帮助的

我正试图确定是我的web应用程序代码出了错,还是继承了移动web应用程序的本质(尤其是在Android设备上)

我有这个网络应用

它是使用asp.net、C#、JavaScript和Jquery设计的

我有一页,里面有两个div。 第一个div显示一个登录页面(即用户名和密码)。
登录时,此div隐藏,显示第二个div

这个第二部分“启动”了一个计时器,它不时地从我的服务器下载一个图像

我使用SetTimeout函数,如果没有映像可供下载或/或image.src已完成其onload事件,我会调用它

我可以在手机上看这个网络应用几个小时,它会一直工作

然后,我注销(即没有计时器处于活动状态),并显示第一个div

我去睡觉

我醒来

我转到我的Android浏览器

web应用程序显示登录div

我登录

好的

{所以对我的服务器的调用有效}

但是没有下载图像

我放了一个视觉计数器来显示我的计时器是否工作

事实并非如此

我刷新页面并重新登录。一切都恢复正常了

现在,如果这是我的代码,我可以接受,但这是Android处理web应用程序的方式吗

任何建议都是伟大的

如果有人需要查看,我可以发布此代码,。但这很简单,我不想模糊我的问题

代码#

第一组

<script type="text/javascript">
    jQuery(function ($) {
        $("#btnGoToLogin").click(function () {
            function StartRefresh() {
                try {
                    Start();
                    //display div 2
                    //hide div 1   
                }
                catch (err) {
                    $("#divVersion").html("1# " + err);
                }
            }            
        });
    });
</script>

嗯,我猜你注销时停止了超时。 因此,当您再次登录时,您将再次启动它。 但在下次登录后,启动可能会失败。 我想这肯定是你的Javascript代码

(…)但这是Android处理web应用程序的方式吗

我想自动锁定屏幕是一回事,它可能会导致计时器暂停/停止。
您整晚都没有使用您的设备,所以我想它会自动锁定。这可能会导致浏览器停止耗尽电池电量

例如,当屏幕锁定时,您将无法观看Youtube视频


这就是我所知道的。希望这有点帮助。

如果没有代码,很难说问题出在哪里,但请尝试以下三种方法:

1) 如果您注销,然后重新登录而不离开活动,是否会发生这种情况? 如果是这样的话,您应该进一步挖掘javascript

2) 如果您注销,将应用程序置于后台,然后将其置于前台,然后重新登录,是否会发生这种情况?如果是,请查看“恢复时暂停”事件

3) 只有当你注销,把应用程序放在后台,让它停留更长的时间,我才会在桌面上看得更多


大家好,欢迎大家发表意见。这个论点的唯一缺陷是,我已经测试了登录和关闭,并再次登录,它的工作。“Start”函数有一个errorhandler,它捕获所有错误,但不显示任何内容。但我真的很感激你的想法。谢谢,谢谢你的想法。现在我很欣赏我的JavaScript体验不是很好,但“活动”是否与本机应用程序相关?谢谢:)对不起,我的错,里德小姐,我只看了WebApp,我认为WebView app不是通过浏览器的WebApp,请忽略第2点和第3点,它会在第1Hi点的某个地方,没关系。关于(1)。只有在我的安卓系统没有在一夜之间(也就是很长一段时间)没有任何活动的情况下才会发生这种情况。在其他情况下,web应用可能会成为焦点,也可能会出现在后台。没什么区别。就像我说的b4,这个脚本非常简单,我到处都有错误处理程序:)我看不出你在哪里给tmrInterval赋值。就像第一个想法一样,每次调用时,我都会尝试通过start函数传递间隔值,而不是使用全局值。安卓会像其他浏览器一样处理计时器,我知道很难发现错误,有时你会花上几天的时间绕圈,看不到明显的错误,但在这个过程中肯定有一个小缺陷,我们必须找到它。(我是根据自己在这里的经验说的)
function Start() {
    try {
        if (timer4x4) window.clearTimeout(timer4x4);
        timer4x4 = window.setTimeout(swapImages4x4, 100);
    }
    catch (err) {
        $("#divVersion").html("1# " + err);
    }
}

function Stop() {
    if (timer4x4) window.clearTimeout(timer4x4);
}

function setImageSrc1x1(src) {
    live1x4.src = src;
    Start();
}

function swapImages4x4() {
    try {
        serverImage1x4.onload = function () {
            setImageSrc1x1(serverImage1x4.src);
        };

        serverImage1x4.onerror = function () {
            Start();
        };
        GetImageStatus();
    }
    catch (err) {
        $("#divVersion").html("2# " + err);
    }
}

function GetImageStatus() {
     serverImage1x4.src = url + '/Mobile/LiveXP.ashx?Alias=' + Alias + '&camIndex=' + camIndex + '&Guid=' + createGuid();

}


    jQuery(function ($) {
        $("#btnExitLogin").click(function () {
            function ExitDiv2() {
                try {
                    Stop();
                    //display div 1
                    //hide div 2   
                }
                catch (err) {
                    $("#divVersion").html("1# " + err);
                }
            }            
        });
    });