Web ビューを含むアプリを開発しています。アプリの特定の時間に、Webview loadUrl への呼び出しを行います。
呼び出しは、UI スレッドのイベントから直接発生する場合もあれば、バックグラウンド ワーカー スレッドのイベントから発生する場合もあります。バックグラウンド スレッドから発生した場合は、runOnUIThead() を呼び出して、loadURL への実際の呼び出しが UI スレッドで発生するようにします。
私が経験しているのは、loadUrl() が UI スレッドから発信された場合は正常に動作しますが、ワーカー スレッドから発信された場合は機能しません (loadUrl への実際の呼び出しは runOnUIThread() に渡すランナブルを介して行われます)。
ブレーク ポイントを設定すると、両方のインスタンスで loadUrl() が UI スレッドで呼び出されていることがわかります。それでも、ある場合には機能しますが、他の場合には機能しません。
私は現在、Android Webview のソース コードをふるいにかけ、機能する場合と機能しない場合がある理由を追跡できるかどうかを確認しています。誰かがこの問題に光を当てることができれば、それは大歓迎です。
- - アップデート - -
この投稿からいくつかの提案を試しました: WebView loadUrl works only once
loadUrl を呼び出す前に、主に次のことを行います。
webView.clearCache(true);
webView.loadUrl("Url");
と:
webView.clearCache(true);
webView.clearView();
webView.reload();
webView.loadUrl("about:blank");
webView.loadUrl("Url");
残念ながら、どちらも機能しません。