在onPause之后,PhoneGap继续在Android上运行

当应用程序在后台时,我决定测试phonegap WebView是否正常运行。

function test2(x){ $('
', {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停止计时器但仍然。 看起来不对。 我预计android会冻结WebView。

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

所以问题是:是否可以在onPause上冻结/暂停/卸载webview并在onResume上解冻/恢复/加载

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

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

我想我希望Android的行为像iOS一样。

我迟到了回应。 在phonegap中, config.xmlKeepRunning param

您必须在config.xml添加以下行

  ...  

它将调用pauseTimers()并暂停所有WebView。 pauseTimers()不是隐藏方法,不需要reflection。

这应该有所帮助: WebView线程永远不会停止(WebViewCoreThread,CookieSyncManager,http [0-3])

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