【发布时间】:2014-04-09 04:03:05
【问题描述】:
我已经为使用webview 加载包含数千张图片的网站而苦苦挣扎了 3 天。
应用程序启动良好,但在滚动数百张图像后,webview 冻结(它不会强制关闭)logcat (check it on pastebin) 显示
E/Surface dequeueBuffer failed (Unknown error 2147483646)
我尝试过的:
- 限制每个活动的图像数量,当用户查看 100 时 图片,开始另一个活动。
- 清除 webview 缓存 onCreation、onPause、onStop 等...
clearCache(true); - 将 webview 缓存设置为 false
setAppCacheEnabled(false); - 在打开活动 B 后杀死活动 A,反之亦然
- 将
webView.setLayerType()设置为无、软件和硬件 - 声明
"android:largeHeap="true"和android:hardwareAccelerated="true"在清单上。 - 将 webview 放在占位符中,然后在
finish();之前将其删除
webViewPlaceholder.removeView(myWebView);
myWebView.removeAllViews();
myWebView.destroy();
似乎android将webview保留在内存中并且清理缓存没有任何效果。
当我关闭应用程序并重新打开它时,错误会立即出现,因此似乎即使关闭应用程序也不会释放它使用的内存。
我已经在 SO 阅读了大量关于 webview 问题的答案,但我仍然无法解决问题,非常感谢任何帮助。
【问题讨论】:
-
您好,我也有类似的问题。如果你能解决这个问题,你能帮忙吗?
-
@isa 这个问题已有 8 年历史了,老实说,我不记得上下文或项目以及我是否真的解决了问题。