【问题标题】:Android WebView - JavaScript Memory LeakAndroid WebView - JavaScript 内存泄漏
【发布时间】:2013-06-25 12:31:09
【问题描述】:

我在 WebView 中遇到 Javascript 问题(使用 webview.getSettings().setJavascriptEnabled(true); 启用)嵌入了 Javascript 的 HTML 页面可以正确加载和显示,但是,我也在做的是不断刷新屏幕每 10 或 30 秒。当我进入我的测试设备(MK808 迷你电视)的外壳时,我使用“dumpsys meminfo”来查看进程的内存。每 5 秒显示一次我的应用程序进程的内存,我可以看到每当页面刷新时,应用程序的内存使用量会跳跃数 (4-10) 兆字节。这将持续大约 30 分钟左右,直到应用程序崩溃并在 WebViewCoreThread 中出现致命信号 11 错误,并且没有堆栈跟踪。

不断增加的内存(从大约 15000kb 开始):


当 javascript 未启用时,不会发生这些内存问题或错误。

我每次刷新前都会清除Cache(true) 和freeMemory(),以及所有其他数据库和缓存。

我也尝试在每次刷新后销毁 WebView 并创建一个全新的,但无济于事。

我可以通过创建一个新的应用程序项目并创建一个基于处理程序控制时间重新加载的 web 视图来轻松地重新解决此问题。这似乎应该是一个普遍的问题,但我找不到任何关于该主题的内容。会不会是我的设备?

提前感谢您的帮助,我很乐意根据需要添加更多信息!

【问题讨论】:

    标签: java javascript android memory-leaks android-webview


    【解决方案1】:

    也尝试添加:

      //Injects the supplied Java object into this WebView. The object is injected into the 
        //JavaScript context of the main frame, using the supplied name. This allows the 
        //Java object's public methods to be accessed from JavaScript.
        WebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    

    【讨论】:

    • 明天我会在我的开发 PC 上尝试这个。但是有一个问题,让当前的活动方法可用于 Javascript 是如何释放 Javascript 似乎占用的内存的?
    • 经过测试,这表明它并没有真正做任何事情......不过感谢您的帮助
    • 你搞清楚了吗?
    • 哇,嗨,我们最终在其他设备上进行了测试,有些出现了问题,有些则没有。我们最终选择了没有出现这种内存泄漏的最终设备。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2018-06-28
    • 1970-01-01
    • 2014-04-18
    • 2012-09-29
    相关资源
    最近更新 更多