我在 WebView 中遇到 Javascript 问题(使用 webview.getSettings().setJavascriptEnabled(true); 启用)嵌入 Javascript 的 HTML 页面加载并正确显示,但是,我也在做的是不断刷新屏幕每 10 或 30 秒。当我进入我的测试设备(MK808 迷你电视)的外壳时,我使用“dumpsys meminfo”来查看进程的内存。每 5 秒显示一次我的应用程序进程的内存,我可以看到每当页面刷新时,应用程序的内存使用量都会跳跃数 (4-10) 兆字节。这将持续大约 30 分钟左右,直到应用程序崩溃并在 WebViewCoreThread 中出现致命信号 11 错误,并且没有堆栈跟踪。
不断增加内存(从 15000kb 左右开始):
当未启用 javascript 时,不会发生这些内存问题或错误。
每次刷新之前,我都会清除缓存 (true) 和 freeMemory(),以及所有其他数据库和缓存。
我也曾尝试在每次刷新后销毁 WebView 并创建一个全新的,但无济于事。
我可以通过创建一个新的应用程序项目并创建一个基于控制时间的处理程序重新加载的 webview 来轻松地重做这个问题。这似乎应该是一个普遍存在的问题,但我找不到关于这个主题的任何内容。会不会是我的设备?
在此先感谢您的帮助,我很乐意根据需要添加更多信息!
最佳答案
尝试添加这个:
//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");
关于java - Android WebView - JavaScript 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352757/