問題タブ [webviewrunonuithread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Android Webview の loadUrl がワーカー スレッドから来ると機能しない
Web ビューを含むアプリを開発しています。アプリの特定の時間に、Webview loadUrl への呼び出しを行います。
呼び出しは、UI スレッドのイベントから直接発生する場合もあれば、バックグラウンド ワーカー スレッドのイベントから発生する場合もあります。バックグラウンド スレッドから発生した場合は、runOnUIThead() を呼び出して、loadURL への実際の呼び出しが UI スレッドで発生するようにします。
私が経験しているのは、loadUrl() が UI スレッドから発信された場合は正常に動作しますが、ワーカー スレッドから発信された場合は機能しません (loadUrl への実際の呼び出しは runOnUIThread() に渡すランナブルを介して行われます)。
ブレーク ポイントを設定すると、両方のインスタンスで loadUrl() が UI スレッドで呼び出されていることがわかります。それでも、ある場合には機能しますが、他の場合には機能しません。
私は現在、Android Webview のソース コードをふるいにかけ、機能する場合と機能しない場合がある理由を追跡できるかどうかを確認しています。誰かがこの問題に光を当てることができれば、それは大歓迎です。
- - アップデート - -
この投稿からいくつかの提案を試しました: WebView loadUrl works only once
loadUrl を呼び出す前に、主に次のことを行います。
と:
残念ながら、どちらも機能しません。
android - UI スレッドが終了する前に、Android WebView JavaScript インターフェイス メソッドが値を返す
javascriptメソッドを呼び出すために、webviewからJavascriptInterfaceメソッドを呼び出しています。問題は、メソッドが結果値を取得する前に値を返すことです。では、UIスレッドからJavaScriptメソッドが実行されるまでreturnステートメントを待機させるにはどうすればよいですか。
Javascriptインターフェース
だから私は performClick() が最初にUIスレッドを完了させ、次に値を返すようにしたい.