gpt4 book ai didi

安卓10 : "Probable deadlock detected due to WebView API being called on incorrect thread while the UI thread is blocked"

转载 作者:行者123 更新时间:2023-12-04 12:17:06 25 4
gpt4 key购买 nike

我的应用由 组成 fragment 全屏 网页浏览 .当用户点击 中的链接时网页浏览 然后是新开的 fragment 新的 网页浏览 网址 .开新前 fragment 我关闭软键盘以防万一。我打开新页面很快。所有操作都在主线程上执行。

通过 Crashlytics,该问题仅出现在 Android 10(所有 Pixel 系列设备和其他配备 10 的设备)上。
在 Android 10 之前的设备上一切正常。我可以打开很多 fragment .但在 Android 10 设备上,这种情况会导致 FATAL EXCEPTION(在 2-3 次快速尝试随机打开新页面后):

E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: <myapp>, PID: 12487
java.lang.RuntimeException: Probable deadlock detected due to WebView API being called on incorrect thread while the UI thread is blocked.
at Yp.a(PG:13)
at com.android.webview.chromium.WebViewChromium.onCheckIsTextEditor(PG:4)
at android.webkit.WebView.onCheckIsTextEditor(WebView.java:3035)
at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1901)
at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1863)
at android.view.inputmethod.InputMethodManager.hideSoftInputFromWindow(InputMethodManager.java:1506)
at android.view.inputmethod.InputMethodManager.hideSoftInputFromWindow(InputMethodManager.java:1475)
at <myapp>.Utils.hideKeyboard(Utils.java:175)
at <myapp>.openNewPage(Pager.java:210)
...
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at Yp.a(PG:11)

我尝试使用 的所有可用版本Android系统WebView (稳定版、测试版、开发版、金丝雀版)但无济于事。
任何人都可以帮助我吗?

更新 :
如果我评论隐藏软键盘的代码,那么一切正常。

最佳答案

这不是解决方案,只是解释问题。

首先,您说“所有操作都在主线程上执行。”,但这是错误的。
堆栈树表明它在工作线程中。

也可以从源代码中确认。
WebView's blocking task .

二、Android Q中的代码改了checks view is text editor从这个版本。

第三,您使用 View.post() 发布一项任务。在UI线程中,与WebView中的进程不同(即不需要等待和阻塞)

综上所述,InputMethodManager 在非 UI 线程中启动了一个任务(WebView.onCheckIsTextEditor()),WebView 想在 UI 线程中执行,但超时(4 秒)没有得到结果。

所以这是因为你在 UI 线程中有太多的工作

关于安卓10 : "Probable deadlock detected due to WebView API being called on incorrect thread while the UI thread is blocked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519749/

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