首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在onPause之后,PhoneGap继续在安卓上运行

在onPause之后,PhoneGap继续在安卓上运行
EN

Stack Overflow用户
提问于 2014-02-02 08:06:39
回答 2查看 7.1K关注 0票数 18

我决定测试一下,当应用程序在后台时,phonegap是否是实时的。

function test2(x){
    $('<div></div>', {text: x.cmd}).appendTo($('#list'));
}
$(function(){test2({cmd:"start"});});
function cb_pause(){test2({cmd:"pause"});}
function cb_resume(){   test2({cmd:"resume"});}
function tick(){test2({cmd:"timer" + timer});timer++;setTimeout(tick, 1000);}
document.addEventListener("pause", cb_pause, false);
document.addEventListener("resume", cb_resume, false);
tick();

它在onPauseonResume上打印pauseresume。并每秒打印timer0timer1等。

当我离开应用程序开始玩游戏的时候,它还在打印。我知道我可以而且应该停止onPause中的计时器,但仍然如此。看起来不太对劲。我原以为安卓会冻结WebView。

我知道后台线程不会停止,如果在后台应用程序,直到它被卸载。

所以问题是:有没有办法在onPause上冻结/挂起/卸载webview,在onResume上解冻/恢复/加载webview

当我说加载时,我的意思是当用户离开应用程序时,它应该处于相同的状态。

当我说冻结时,我的意思是我的代码将暂停,即使它将继续调用setTimeout

我想我希望Android能表现得像iOS一样。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-07 21:54:31

我的回复来晚了。在phonegap中,config.xml中有KeepRunning参数

您必须将以下行添加到config.xml

<platform name="android">
    ...
    <preference name="KeepRunning" value="false" />

它将调用pauseTimers()并暂停所有WebViews。pauseTimers()不是隐藏方法,也不需要反射。

票数 26
EN

Stack Overflow用户

发布于 2014-02-05 07:20:04

这应该会有帮助:WebView threads never stop (WebViewCoreThread, CookieSyncManager, http[0-3])

基本上,您必须使用反射来访问WebView的onPause/onResume方法,才能真正使其暂停和恢复。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21505369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档