Skip to content

Commit 0ace122

Browse files
Fix BlazorWebView disposal on Android (#7349)
1 parent b041b65 commit 0ace122

File tree

2 files changed

+4
-17
lines changed

2 files changed

+4
-17
lines changed

src/BlazorWebView/src/Maui/Android/AndroidWebKitWebViewManager.cs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ internal class AndroidWebKitWebViewManager : WebViewManager
2727
private static readonly AUri AndroidAppOriginUri = AUri.Parse(AppOrigin)!;
2828
private readonly AWebView _webview;
2929
private readonly string _contentRootRelativeToAppRoot;
30-
private WebMessagePort[]? _nativeToJSPorts;
3130

3231
/// <summary>
3332
/// Constructs an instance of <see cref="AndroidWebKitWebViewManager"/>.
@@ -74,33 +73,21 @@ internal bool TryGetResponseContentInternal(string uri, bool allowFallbackOnHost
7473

7574
internal void SetUpMessageChannel()
7675
{
77-
_nativeToJSPorts = _webview.CreateWebMessageChannel();
76+
// These ports will be closed automatically when the webview gets disposed.
77+
var nativeToJSPorts = _webview.CreateWebMessageChannel();
7878

7979
var nativeToJs = new BlazorWebMessageCallback(message =>
8080
{
8181
MessageReceived(AppOriginUri, message!);
8282
});
8383

84-
var destPort = new[] { _nativeToJSPorts[1] };
84+
var destPort = new[] { nativeToJSPorts[1] };
8585

86-
_nativeToJSPorts[0].SetWebMessageCallback(nativeToJs);
86+
nativeToJSPorts[0].SetWebMessageCallback(nativeToJs);
8787

8888
_webview.PostWebMessage(new WebMessage("capturePort", destPort), AndroidAppOriginUri);
8989
}
9090

91-
protected override async ValueTask DisposeAsyncCore()
92-
{
93-
await base.DisposeAsyncCore();
94-
95-
if (_nativeToJSPorts is not null)
96-
{
97-
foreach (var port in _nativeToJSPorts)
98-
{
99-
port?.Close();
100-
}
101-
}
102-
}
103-
10491
private class BlazorWebMessageCallback : WebMessagePort.WebMessageCallback
10592
{
10693
private readonly Action<string?> _onMessageReceived;

0 commit comments

Comments
 (0)