gpt4 book ai didi

android - Webview.draw(Canvas) 在 Android 5.0 中抛出异常

转载 作者:行者123 更新时间:2023-12-02 03:22:52 27 4
gpt4 key购买 nike

我编写了以下代码以使用 webview 生成位图,但在 Android Lolipop 中出现了以下异常 webView.draw(canvas);,5.0 除外:

代码:

protected Bitmap doInBackground(Void... params) {
try {
Bitmap bitmap = null;
Thread.sleep(5000);

if (webView.getMeasuredHeight() > 0) {
bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);

webView.draw(canvas);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

异常(exception):

java.lang.RuntimeException: Probable deadlock detected due to WebView API being called on incorrect thread while the UI thread is blocked.

我该如何解决这个问题?

最佳答案

此异常是从 WebViewChromium.runBlockingFuture() 抛出的.

在那里,一些任务(在您的情况下,可能是绘图)被放入队列中以在 UI 线程上运行。

然后,我们最多等待四秒钟的结果。如果到那时任务尚未完成,您将获得该异常。

我看到花了这么长时间的两个可能原因:

  1. 绘图实际上由于某种原因(非常复杂的页面?)花了那么长时间。
  2. 您的主/UI 线程在这段时间内实际上非常繁忙,因此任务实际上并没有运行。

我认为#2 更有可能。此时你应该检查你的主线程在做什么。是否存在任何潜在的互斥问题,例如死锁?或者可能只是很忙?

关于android - Webview.draw(Canvas) 在 Android 5.0 中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32137761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com