在Android O中动态创建WebView时出现了RuntimeException

6
我正在Android O中从IntentService动态创建Webview,并遇到以下崩溃:
java.lang.RuntimeException: 在执行doInBackground()时发生错误 at android.os.AsyncTask$3.done(AsyncTask.java:353) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383) at java.util.concurrent.FutureTask.setException(FutureTask.java:252) at java.util.concurrent.FutureTask.run(FutureTask.java:271) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.RuntimeException: 尚未覆盖UI线程 at org.chromium.base.ThreadUtils.getUiThreadHandler(ThreadUtils.java:5) at org.chromium.base.ThreadUtils.runningOnUiThread(ThreadUtils.java:45) at com.android.webview.chromium.WebViewChromiumFactoryProvider.C(WebViewChromiumFactoryProvider.java:149) at com.android.webview.chromium.WebViewChromiumFactoryProvider.l(WebViewChromiumFactoryProvider.java:262) at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:29) at android.webkit.WebView.<init>(WebView.java:658) at android.webkit.WebView.<init>(WebView.java:588) at android.webkit.WebView.<init>(WebView.java:571) at android.webkit.WebView.<init>(WebView.java:558) at android.webkit.WebView.<init>(WebView.java:548)
这在早期版本的Android中运行良好。有什么想法吗?

正如消息所示,与UI线程交互的某个类存在问题。我曾经遇到过类似的问题,并通过在UI线程上执行所有WebView交互来解决它们。在您的服务中,您可以尝试以下操作:context.runOnUiThread(new Runnable() {public void run() { /* your code here */ }});(将/your code here/替换为创建WebView的代码)。 - EJK
不幸的是,runOnUiThreadActivity 的一个方法,而不是 Context 的。在服务的上下文中没有相关性。 - Cigogne Eveillée
无法在服务内的线程中调用runOnUiThread。 - EJK
1个回答

2

正如@EJK所提到的,解决方案是在UI线程上运行有问题的代码。我通过从IntentService切换到Service来实现这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接