出于各种原因,我需要runOnUiThread()实际的实例化&初始化WebView。
这意味着它的底层HTTP连接也是在UI线程上进行的吗?
如果是这样,是否可以将WebView的UI thead与HTTP连接线程分开?
如果有可能,实现这个目标的正确方法是什么?
答案 0 :(得分:12)
我发现非常很难相信Android会在UI线程上运行远程HTTP请求,假设您通过WebView.loadUrl()
发起请求。这将导致糟糕的用户体验。
很快,我在调试器中运行了一个Android应用程序,基本为WebView
,并在调试器中停止。这就是我所看到的:
如果WebViewCoreThread
,WebViewWorkerThread
或http0
- http3
未处理WebView
个对象的网络连接,则
此外,如果您通过堆栈溢出的最高信誉用户loadUrl() is asynchronous之一查看此答案。在调试器中快速一步,告诉我在UI线程(又名loadUrl()
)上调用的main
完成得太快,无法在UI线程上同步处理连接。 (我在调用loadUrl()
之前和之后设置了一个断点,其中包含一个我知道不能很快提供的URL。)
所以,我的回答是你已经完成了...他们已经分开了!(是的!)