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

Ped*_*ito 5 android webview

我已经在一个 Android 应用程序上苦苦挣扎了 3 天,该应用程序使用 awebview来加载我的包含数千张图像的网站。应用程序启动良好,但在滚动数百个图像后冻结webview(它不会强制关闭)logcat(在pastebin上检查它)显示

E/Surface dequeueBuffer failed (Unknown error 2147483646)
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  1. 限制每个 Activity 的图像数量,当用户查看 100 个图像时,启动另一个 Activity。
  2. 清除 webview 缓存 onCreation、onPause、onStop 等... clearCache(true);
  3. 将 webview 缓存设置为 falsesetAppCacheEnabled(false);
  4. 打开活动 B 后杀死活动 A,反之亦然
  5. 将其设置webView.setLayerType()为“无”、“软件”和“硬件”
  6. 在舱单上声明"android:largeHeap="true"android:hardwareAccelerated="true"
  7. 将 webview 放入占位符中并在之前将其删除finish();

webViewPlaceholder.removeView(myWebView);  
myWebView.removeAllViews();  
myWebView.destroy();
Run Code Online (Sandbox Code Playgroud)

看来android将其保留webview在内存中并且清理缓存没有任何效果。
当我关闭应用程序并重新打开它时,错误立即出现,因此似乎即使关闭应用程序也不会释放它使用的内存。
我已经在 SO 上阅读了大量有关webview问题的答案,但我仍然无法解决问题,非常感谢任何帮助。

小智 0

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

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Run Code Online (Sandbox Code Playgroud)