ヘディングのテキストCross-platform(Android、iOS、可能であればUWP)が前提で、UIスレッドとは別に、Web検索をbackgroundで行うため、Xamarin.forms.WebView(当然、派生したクラスですが)をUIスレッド以外のタスク(or スレッド)で走らせることは可能ですか?
Webの検索にWebViewを使用するのは、自身のWebの中にJavaScriptを前提としたパージがあり、このパージを含めて検索する必要があり、このページを変更する場合は他のアプリの関係で多大なコストがかかるため、JavaScriptを使用するためです。
元々Android向けに作成したアプリを、Cross-Platoform化するためで、AndroidではServiceを使用してWebViewをBackgroundで起動していました。
試しに(強引ですが)、
CustomWebView:WebViewに
void NavigateCustomPage(string url)
{
if(url.Equals([URL]) { 処理1; Source=[URL_Other]; }
else if(url.Equals([URL_Other]) { 処理2; ... }
}
また、CustonWebViewRederer:WebViewRendererのControlOnNavigationCompletedには、
custonWebView.NavigateCustomPage(args.Uri.ToString());
用意して、MainPage:ContentPageで
Task.Run(() => { new CustomWebView().NavigateCustomPage([URL]); });
とすると、Task.Run()で呼ばれた時には、処理1が実行されますが、その後のSource=の個所では、各OS用のCustomWebViewRedererのControlOnxxxは呼び出されていないようで、結果として処理2も呼ばれていない状態です。
そこで思ったのが、Xamarin.Forms.WebViewは、UIスレッドを前提としたクラスなのでしょうか?