Surface - dequeueBuffer失败(未知错误2147483646)

时间:2014-04-09 04:03:06

标签: android webview

我用Android应用程序使用webview加载包含数千张图片的网站,已经挣扎了3天。 该应用程序开始运行良好,但滚动了几百张图像后,webview冻结(它不强制关闭)logcat (check it on pastebin)显示

E/Surface dequeueBuffer failed (Unknown error 2147483646)

我尝试了什么:

  1. 当用户查看100时,限制每个活动上的图像数量 图像,开始另一项活动。
  2. 清除onCreation,onPause,onStop等上的webview缓存... clearCache(true);
  3. 将webview缓存设置为false setAppCacheEnabled(false);
  4. 在打开活动B之后杀死活动A,反之亦然
  5. webView.setLayerType()设置为NONE,SOFTWARE和HARDWARE
  6. 声明"android:largeHeap="true"和 清单上的android:hardwareAccelerated="true"
  7. 将webview放在占位符中,然后在finish();
  8. 之前删除它
    webViewPlaceholder.removeView(myWebView);  
    myWebView.removeAllViews();  
    myWebView.destroy();
    

    似乎android将webview保留在内存中,清理缓存没有任何效果 当我关闭应用程序并重新打开它时,错误会立即出现,所以看起来即使关闭应用程序也不会释放它使用的内存。
    老实说,我没有办法解决这个问题,我已经在webview上看到了相当多的答案,但我仍然无法解决问题。
    我很感激 light

1 个答案:

答案 0 :(得分:0)

for KitKat 4.4.3或更高版本将硬件加速设置为false:

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);