Web App停止工作

时间:2014-02-12 09:47:47

标签: javascript android timer

这个问题有点模糊,因为我不确定如何说出来。我完全接受这可以被拒绝,但如果有人有洞察力,那将是最有帮助的。

我正在尝试确定这是我的网络应用程序代码是否有问题或移动Web应用程序的继承性质(特别是在Android设备上)。

我有这个网络应用程序。

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

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

这个第二个div'启动'一个定时器,它不时地从我的服务器下载图像。

我使用SetTimeout函数,如果没有可供下载的图像或/并且image.src已完成其onload事件,我会记得它。

我可以在手机上查看这个网络应用程序几个小时,它将一直有效。

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

我去睡觉了。

我醒了。

我转到我的Android浏览器。

网络应用显示登录div

我登录

一切都好。

{所以对我的服务器的调用工作}

但没有下载图片。

我已经安装了一个可视计数器来显示我的计时器是否正常工作。

不是。

我刷新页面并重新登录。一切都有效。

现在,我可以接受,如果它是我的代码,但它是否像Android处理网络应用程序一样?

任何建议都是盛大的。

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

CODE#

在DIV 1中

<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>

在DIV 2中

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);
                }
            }            
        });
    });

2 个答案:

答案 0 :(得分:1)

好吧,我猜你在退出时停止了超时。 因此,当您再次登录时,再次启动它。 但是下次登录后开始可能会失败。 我想这肯定是你的Javascript代码。

  

(...)但这是Android处理网络应用的方式吗?

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

E.g。当您的屏幕锁定时,您将无法观看Youtube视频。

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

答案 1 :(得分:1)

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

1)如果您注销,是否会发生这种情况,而不是在不离开活动的情况下再次重新登录? 如果是这样,你应该深入挖掘你的javascript

2)如果您注销,将应用程序置于后台,而不是将其置于前台,重新登录,是否会发生这种情况?如果是这样,请查看恢复活动暂停

3)只有当您退出,将应用程序置于后台并将其保留更长时间时,才会发生这种情况,我会在onStop中查看更多内容

电子