Подтвердить что ты не робот

Можно ли отделить пользовательский интерфейс WebView и потоки HTTP?

По разным причинам мне нужно runOnUiThread() фактическое создание и инициализацию WebView.

Что означает, что его базовые HTTP-соединения также выполняются в потоке пользовательского интерфейса?

Если это так, возможно ли отделить веб-интерфейс WebView от потока HTTP-соединений?

Если это возможно, каков правильный способ этого сделать?

4b9b3361

Ответ 1

Я считаю, что очень трудно поверить, что Android будет запускать удаленные HTTP-запросы в потоке пользовательского интерфейса, предполагая, что вы инициируете запросы через WebView.loadUrl(). Это создаст ужасный пользовательский интерфейс.

Сразу же я запустил приложение Android в отладчике с базовым WebView и остановился в отладчике. Вот что я вижу:

enter image description here

Если WebViewCoreThread, WebViewWorkerThread или http0 - http3 не обрабатывают сетевые подключения для объектов WebView, тогда

  • У них очень плохие имена.
  • Android построен очень плохо

Кроме того, если вы посмотрите на этот ответ одним из пользователей с наивысшей точкой, loadUrl() является асинхронным. Быстрый шаг в отладчике говорит мне, что loadUrl(), который вызывается в потоке пользовательского интерфейса (aka main), слишком быстро завершает работу для синхронного соединения в потоке пользовательского интерфейса. (Я поставил точку останова до и после вызова loadUrl() с URL, который, как я знаю, не выполняется очень быстро).

Итак, мой ответ , вы закончили... они уже разделены! (да!)