这可能是一个愚蠢的问题,我找不到答案:
我在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()
也不“关闭”窗口(我只是重新加载它),所以我真的不确定我的代码的基本行为。有什么想法吗?