重新加载WebView会取消以前对setInterval()的调用吗?

时间:2016-01-11 18:31:53

标签: javascript android battery

这可能是一个愚蠢的问题,我找不到答案:

我在Android WebView显示的HTML / JS页面中设置了一些形状的动画。为此,我使用Javascript setInterval()方法:

var animateThreadHandler;

function animateThread() {
   // animate some stuff here...
}

// This function is called from the HTML page: <body onload="onBodyLoaded()">
function onBodyLoaded() {
    animateThreadHandler = setInterval(animateThread, 200);
}

稍后,在我的Android Activity代码中,我从这个HTML页面切换到另一个页面,保持相同WebView

mWebview.loadDataWithBaseURL(baseUrl, htmlContent, HTML_CONTENT_TYPE, HTML_ENCODING, null);

但我从不在Javascript中调用clearInterval(animateThreadHandler)。即使这种方法运行良好,我也不想通过无用的Javascript函数调用来消耗用户的电池,这些函数最终会出现我看不到的错误。

我监视JS animateThread()函数的行为,使其生成日志(请参阅注释),并在重新加载WebView后停止日志记录。但这并不能证明调度程序已被清除:对animateThread()的调用可能会继续发生 - 并且由于在Webview重新加载时卸载了JS代码,因此无法正常运行。

这种怀疑背后的理由存在于W3School says

  

setInterval()方法将继续调用函数直到   调用clearInterval(),或关闭窗口。

我既不调用clearInterval()也不“关闭”窗口(我只是重新加载它),所以我真的不确定我的代码的基本行为。有什么想法吗?

0 个答案:

没有答案