我的android應用程序中有一個WebView,並且此WebView正在運行一個網站,其中包含一定的Javascript。當我的應用程序在後臺運行時,用戶報告功耗很高,我期望這是由於此javascript。但是,我不想完全卸載或刪除WebView,因爲這會影響恢復時間。Android WebView在應用程序在後臺運行時消耗大量電量
當應用程序在後臺(onPause())時,有什麼辦法有選擇地關閉Javascript和/或禁用WebView?
我的android應用程序中有一個WebView,並且此WebView正在運行一個網站,其中包含一定的Javascript。當我的應用程序在後臺運行時,用戶報告功耗很高,我期望這是由於此javascript。但是,我不想完全卸載或刪除WebView,因爲這會影響恢復時間。Android WebView在應用程序在後臺運行時消耗大量電量
當應用程序在後臺(onPause())時,有什麼辦法有選擇地關閉Javascript和/或禁用WebView?
認可爲http://www.mcseven.me/2011/12/how-to-kill-an-android-webview/唯一的工作方式是重定向到沒有JavaScript的空白頁面(並在恢復後返回)。
在PhoneGap的的情況下,頁面應該包含的代碼返回自己:
<!DOCTYPE html><html><head>
<script type="text/javascript" src="js/phonegap/cordova-2.9.0.js"></script>
<script type="text/javascript" src="js/jquery/jquery-1.9.1.min.js"></script>
</head><body>
<script type="application/javascript">
$(document).on('deviceready', function() {
$(document).on('resume', function() {
return history.back ? history.back() : history.go(-1);
});
});
</script>
</body></html>
更新:以上是科爾多瓦2.x.x.在科爾多瓦的3.xx(不知道是否因爲3.0.0,但是可以肯定在當期的3.7.x),你可以簡單地添加KeepRunning
偏好配置中的XML:
<preference name="keepRunning" value="false" />
這將暫停所有JS計時器,直到APP再次恢復;見https://stackoverflow.com/a/21629586/2011448。
我不確定您的webview是否可以在背景中執行某些操作。我想你的webview是你的活動的一部分。當活動不可見時,它已暫停。 – vandzi
我可以肯定地說,我看到內容,在恢復活動時,表明webview在後臺「完成了」。也就是說,我看到時間敏感的項目在應用程序暫停時必須已經加載。 –