我决定测试当app在后台时,phonegap WebView是否有效。
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();
它在pause
和resume
上打印onPause
和onResume
。
并且每秒打印timer0
,timer1
等。
即使我离开应用程序并开始玩游戏也会打印。
我知道我可以并且应该在onPause
停止计时器但仍然。看起来不对劲。我预计android会冻结WebView。
我知道后台线程在后台应用程序中不会停止,直到它被卸载。
所以问题是:是否可以冻结/暂停/卸载onPause
上的webview并解冻/恢复/加载onResume
当我说加载时我的意思是当用户离开app时它应该处于相同的状态。
当我说冻结时,我的意思是我的代码会暂停,即使它会继续调用setTimeout
我想我希望Android的行为与iOS一样。
答案 0 :(得分:26)
我迟到了回应。在phonegap中,KeepRunning
config.xml
个参数
您必须将以下行添加到config.xml
<platform name="android">
...
<preference name="KeepRunning" value="false" />
它将调用pauseTimers()
并暂停所有WebView。 pauseTimers()
不是隐藏方法,不需要反映。
答案 1 :(得分:4)
这应该有所帮助:WebView threads never stop (WebViewCoreThread, CookieSyncManager, http[0-3])
基本上你必须使用反射来访问WebView的onPause / onResume方法,才能真正让它暂停和恢复。