【问题标题】:Android WebView consumes lots of power when the application is running in the background当应用程序在后台运行时,Android WebView 会消耗大量电量
【发布时间】:2015-02-25 19:58:52
【问题描述】:

我的 android 应用程序中有一个 WebView,这个 WebView 正在运行一个网站,上面有相当多的 Javascript。当我的应用程序在后台运行时,用户报告了高功耗,我预计这是由于这个 javascript。但是,我不想完全卸载或删除 WebView,因为这会影响恢复时间。

当应用程序处于后台时(onPause()),有什么方法可以选择性地关闭 Javascript 和/或完全禁用 WebView?

【问题讨论】:

  • 我不确定您的 webview 在后台是否可以执行某些操作。我猜你的 webview 是你活动的一部分。当活动不可见时,它会暂停。
  • 我可以肯定地说,在恢复活动后,我看到的内容表明 webview 在后台“完成了一些事情”。也就是说,我看到在应用暂停时出现了必须加载的时间敏感项。

标签: android


【解决方案1】:

根据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>

更新:以上内容适用于 Cordova 2.x.x。在 Cordova 3.x.x 中(不确定是否从 3.0.0 开始,但可以肯定在当前 3.7.x 中)您可以在配置 XML 中简单地添加 KeepRunning 首选项:

<preference name="keepRunning" value="false" />

这会暂停所有的JS定时器,直到APP再次恢复;见https://stackoverflow.com/a/21629586/2011448

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多