12

由于各种原因,我需要runOnUiThread()的实际实例化和初始化WebView

这意味着它的底层 HTTP 连接也是在 UI 线程上建立的?

如果这是真的,是否可以将 WebView 的 UI 标题与 HTTP 连接线程分开?

如果可能,实现此目的的正确方法是什么?

4

1 回答 1

13

很难相信 Android 会在 UI 线程上运行远程 HTTP 请求,假设您通过WebView.loadUrl(). 这将导致糟糕的用户体验。

很快,我在调试器中运行了一个带有 basic 的 Android 应用程序,WebView然后在调试器中停止了。这是我看到的:

在此处输入图像描述

如果WebViewCoreThreadWebViewWorkerThreadhttp0-http3不处理WebView对象的网络连接,则

  1. 他们的名字很糟糕
  2. Android的构建真的很糟糕

此外,如果您通过堆栈溢出的最高声誉用户之一查看此答案,则loadUrl() 是 asynchronous。调试器中的快速步骤告诉我,loadUrl()在 UI 线程(又名)上调用的main完成速度太快,无法在 UI 线程上同步处理连接。(我在调用之前和之后设置了一个断点,并且loadUrl()我知道它不会很快提供服务)。

所以,我的回答是你已经完成了......他们已经分开了!(是的!)

于 2012-06-29T09:56:22.387 回答