damdmen
damdmen
  • 发布:2016-02-25 21:29
  • 更新:2016-04-10 14:11
  • 阅读:3556

用户点击home键后,js代码还会继续执行多久?

分类:MUI

1.自己在其他网上咨询过,回答是用户按home键返回桌面后,(原生)代码还会继续执行。

这个我不知道是不是这样,但我感觉国产的rom很多都是过一会就把app从内存里清理了,导致返回去后又从启动画面重新加载了。

2.第二个问题是针对Hybrid APP的,用户按home键返回桌面后,Webview里的js代码还继续执行吗?这个自己亲自做过实验,云端打包的app,按home键(触发pause)后js代码大概继续执行10秒左右的样子就不执行了,返回后(resume)也不继续从刚才的地方继续执行。我想知道怎么让他在后台也能一直执行呢(比方说js的setInterval函数或plus.watchPosition函数)?谢谢

**更新:我发现我太幼稚了,我测试的时候用js代码测试用innerText += 'xxxx'往dom里写字可以一直执行很久。

但是换成 setInterval( plus.getCurrentPosition() , 20*1000 ) 或者 plus.watchPosition 在安卓下都只执行一次!即使应用还在前台也只执行了一次。

求解决!**

2016-02-25 21:29 负责人:无 分享
已邀请:
agressor

agressor

手机上按home键跟 电脑上你把浏览器最小化没什么区别吧!因为进程还是存在的。

  • damdmen (作者)

    这让我这个小白来科普给大家:绝!对!不!一!样!不要做这种简单的类比。。

    2016-02-25 22:35

damdmen

damdmen (作者) - 社交app创业中,求靠谱合伙人

最近又在 小米miui V4 上测试了下 发现js代码还是可以执行很久的,看来国产的rom一般也是视内存情况而定来释放的,如果内存够用的话代码会一直执行的

更多系统稍后继续测试。。

damdmen

damdmen (作者) - 社交app创业中,求靠谱合伙人

更新:我发现我太幼稚了,我测试的时候用js代码测试用innerText += 'xxxx'往dom里写字可以一直执行很久。

但是换成 setInterval( plus.getCurrentPosition() , 20*1000 ) 或者 plus.watchPosition 在安卓下都只执行一次!即使应用还在前台也只执行了一次。

求解决!

maq

maq

setInterval() 的第一个参数需要你给一个【函数】,而你现在是调用一个函数之后把返回值作为参数传进去了,那当然就只能执行一次了。

  • damdmen (作者)

    谢谢!

    2016-04-10 14:09

damdmen

damdmen (作者) - 社交app创业中,求靠谱合伙人

更新:现在好了

我试了下 现在是可以的

我一开始是setinterval( xxx() , 10000 ) 里面没加引号

加上引号就正常了setinterval( 'xxx()' , 10000 )

maq

maq

Android 系统为了尽量满足前台任务的需求,在内存不足的时候会按一定策略关闭后台任务,具体策略可能会各异。而像手机卫士之类的软件更是专门做这个事情的。有些还是可以设置的,比如指定特定的应用即使在后台也尽量不杀掉。

至于你说的【10秒左右就不执行了】,具体是进入了一种什么状态(被杀掉还是被冻结),还有待进一步考察。而所谓【不继续从刚才的地方继续执行】这个,由于 js 整体上是事件驱动的,基本上不存在长时间连续执行的大段代码,所以其实很难判定所谓【刚才的地方】是在哪里。

我对这个话题也很感兴趣,希望有懂得的朋友能给出确切的解释。

  • damdmen (作者)

    具体进入什么状态我不知道,我是用plus.watchPosition和js的setInterval分别做过测试,都是执行几秒后就没了

    2016-02-25 22:06

  • maq

    请问你在把应用切换到后台之后,是用什么方法来观察 js 是否继续运行的?是靠发送网络请求么?

    2016-02-25 22:11

该问题目前已经被锁定, 无法添加新回复