就是类似定时器那种js在安卓锁屏后就失效了,搜了些解决方法,比如worker.js和改 自己试了感觉并没有什么效果,有找到解决方法的朋友吗,没有的话有什么思路的也可以来提供下,不胜感激。
放在后台任务用websocket
我面临的问题其实是服务端发给客户端(安卓)数据,客户端接收数据处理,但是客户端在关屏状态js不能用,主要矛盾在这,有大佬有办法吗
我当时也苦恼这个问题,最后我自己写了个service,用js掉起,然后让service后台运行,为了方便让连接keep alive,又在服务器上装了openfire。用xmpp协议发推送数据。不用mqtt的原因是不好点对点推送。然后又在后台用java写了个来数据就推到openfire的方法。采坑用了十几天。
在html5中document新增了一个事件 visibilitychange,这个事件在页面前台或后台切换时被触发,你所说的问题就简单了,它也有个对应的属性visibilityState,用于检测当前页面的状态值为hidden还是visible。
解法是,在hidden时记录当前时间,在visible时用当前时间减去之前记录的时间就为当前倒计时需要减去的时间,这也就不需要和后台沟通了,或者你直接在visible时刷新页面也行。
var b=getTime();
function getTime()
{
return Date.now();
}
document.addEventListener('webkitvisibilitychange',function()
{
if(document.webkitVisibilityState=='hidden')
{
b=getTime();
}else
{
document.body.appendChild(document.createTextNode('间隔:'+(getTime()-b)))
}
})
document.addEventListener('mozvisibilitychange',function()
{
if(document.mozVisibilityState=='hidden')
{
b=getTime();
}else
{
document.body.appendChild(document.createTextNode('间隔:'+(getTime()-b)))
}
})