我的Android应用程序中有一个WebView,并且此WebView运行的网站上带有相当多的Javascript。当我的应用程序在后台运行时,用户报告了高功耗,我希望这是由于此javascript。但是,我不想完全卸载或删除WebView,因为这会影响恢复时间。
当应用程序在后台运行时,有什么方法可以有选择地关闭Javascript和/或完全禁用WebView(onPause())吗?
最佳答案
根据http://www.mcseven.me/2011/12/how-to-kill-an-android-webview/的唯一可行方法是不使用javascript重定向到空白页(并在恢复后返回)。
在使用PhoneGap的情况下,页面应包含返回自身的代码:
$(document).on('deviceready', function() {
$(document).on('resume', function() {
return history.back ? history.back() : history.go(-1);
});
});
更新:上面是针对Cordova2.x.x。在Cordova 3.x.x中(不确定是否从3.0.0开始,但是肯定在3.7.x中),您可以在配置XML中简单地添加KeepRunning首选项:
这将暂停所有JS计时器,直到APP再次恢复为止。参见https://stackoverflow.com/a/21629586/2011448。