12

さまざまな理由から、WebViewの実際のインスタンス化と初期化をrunOnUiThread()する必要があります。

つまり、基になる HTTP 接続も UI スレッドで行われるということですか?

これが本当なら、WebView の UI ヘッドを HTTP 接続スレッドから分離することは可能ですか?

可能であれば、これを達成する適切な方法は何ですか?

4

1 に答える 1

13

Android がリモート HTTP リクエストを UI スレッドで実行するとは信じがたいと思いますWebView.loadUrl()。これはひどいユーザーエクスペリエンスになります。

すぐに、Android アプリをデバッガーで実行し、basic を使用しWebViewて、デバッガーで停止しました。ここに私が見るものがあります:

ここに画像の説明を入力

、、または-がオブジェクトのネットワーク接続を処理していない場合WebViewCoreThreadWebViewWorkerThreadhttp0http3WebView

  1. 彼らは非常に悪い名前を持っています
  2. Android のビルドは本当にひどいものです

また、スタック オーバーフローの最も評判の高いユーザーの 1 人によるこの回答を見ると、loadUrl() は非同期です。デバッガーで簡単な手順を実行するloadUrl()と、UI スレッド (別名main) で呼び出される の完了が速すぎて、接続を UI スレッドで同期的に処理できないことがわかります。loadUrl()(非常に迅速に提供されないことがわかっているURLを使用して、呼び出しの前後にブレークポイントを置きます)。

だから、私の答えはあなたが終わったということです...彼らはすでに分離しています!(うん!)

于 2012-06-29T09:56:22.387 に答える