.NET ソフトウェア フレームワークに基づく Microsoft テクノロジ。 特定のカテゴリに適合しないその他のトピック。
「遅いときがある」なので常に遅いではなく、まれに遅くなるのですか?
MAUIが遅いのか、WebViewが遅いのか、そのURLのネットワークが遅いのかを切り分けないと何とも言えませんね。
# RAMを1GBにしてあるエミュレーターでためしてもWebViewを2個では全く遅くならず、もっとたくさんのWebViewで重いウェブページを読ませるとメモリ不足で遅くなりましたが…
MAUIをAndroidでデバッグ実行させるとVisualStudioの出力ウィンドウにログが出るので、まずはそれを確認することから。
それで遅い原因がわからなければ、ロードが遅いのかネットワークが遅いのかを以下のようにイベントを監視すればよいでしょう。
<WebView AutomationId="wv1" BackgroundColor="White" HeightRequest="100" Source="https://www.microsoft.com/"
Loaded="wv_Loaded" Navigating="wv_Navigating" Navigated="wv_Navigated"/>
<WebView AutomationId="wv2" BackgroundColor="White" HeightRequest="100" Source="https://www.bing.com/"
Loaded="wv_Loaded" Navigating="wv_Navigating" Navigated="wv_Navigated"/>
<WebView AutomationId="wv3" BackgroundColor="White" HeightRequest="100" Source="https://copilot.microsoft.com/"
Loaded="wv_Loaded" Navigating="wv_Navigating" Navigated="wv_Navigated"/>
<!-- 他にも沢山 -->
private void wv_Loaded(object sender, EventArgs e) => DebugWriteLineName(sender);
private void wv_Navigating(object sender, WebNavigatingEventArgs e) => DebugWriteLineName(sender);
private void wv_Navigated(object sender, WebNavigatedEventArgs e) => DebugWriteLineName(sender);
private void DebugWriteLineName(object sender, [System.Runtime.CompilerServices.CallerMemberName] string evname = "")
{
if (sender == null) return;
var membytes = GC.GetTotalMemory(false);
var name = ((Element)sender).AutomationId;
System.Diagnostics.Debug.WriteLine($"{DateTime.Now:HH:mm:ss.fff} {evname} {name} Mem={membytes}");
}
あとは、Androidの開発者向けオプションを有効にして、システムトレースのWebViewなどを調べないとわからないでしょう。