diff --git a/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs b/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs index 880918bebe..ec619fd0f3 100644 --- a/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs +++ b/src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs @@ -6,8 +6,10 @@ using Avalonia.Platform; namespace Avalonia.Android.Platform { - internal class AndroidSystemNavigationManagerImpl : ISystemNavigationManagerImpl + internal class AndroidSystemNavigationManagerImpl : ISystemNavigationManagerImpl, IDisposable { + private readonly IActivityNavigationService? _navigationService; + public event EventHandler? BackRequested; public AndroidSystemNavigationManagerImpl(IActivityNavigationService? navigationService) @@ -16,6 +18,7 @@ namespace Avalonia.Android.Platform { navigationService.BackRequested += OnBackRequested; } + _navigationService = navigationService; } private void OnBackRequested(object? sender, AndroidBackRequestedEventArgs e) @@ -26,5 +29,13 @@ namespace Avalonia.Android.Platform e.Handled = routedEventArgs.Handled; } + + public void Dispose() + { + if (_navigationService != null) + { + _navigationService.BackRequested -= OnBackRequested; + } + } } } diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs index 5d5f01db94..e9f9050af1 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs @@ -45,7 +45,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform private readonly AndroidInputMethod _textInputMethod; private readonly INativeControlHostImpl _nativeControlHost; private readonly IStorageProvider _storageProvider; - private readonly ISystemNavigationManagerImpl _systemNavigationManager; + private readonly AndroidSystemNavigationManagerImpl _systemNavigationManager; private readonly AndroidInsetsManager _insetsManager; private readonly ClipboardImpl _clipboard; private ViewImpl _view; @@ -155,6 +155,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform public virtual void Dispose() { + _systemNavigationManager.Dispose(); _view.Dispose(); _view = null; }