是否可以分离WebView的UI和HTTP线程?

时间:2012-06-27 17:15:09

标签: android android-asynctask android-webview httpconnection android-networking

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

这意味着它的底层HTTP连接也是在UI线程上进行的吗?

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

如果有可能,实现这个目标的正确方法是什么?

1 个答案:

答案 0 :(得分:12)

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

很快,我在调试器中运行了一个Android应用程序,基本为WebView,并在调试器中停止。这就是我所看到的:

enter image description here

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

  1. 他们的名字非常糟糕
  2. Android构建非常糟糕
  3. 此外,如果您通过堆栈溢出的最高信誉用户loadUrl() is asynchronous之一查看此答案。在调试器中快速一步,告诉我在UI线程(又名loadUrl())上调用的main完成得太快,无法在UI线程上同步处理连接。 (我在调用loadUrl()之前和之后设置了一个断点,其中包含一个我知道不能很快提供的URL。)

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