Browse Source

unsubscribe android back handler when toplevel is disposed (#13831)

#Conflicts:
#	src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
release/11.0.7
Emmanuel Hansen 3 years ago
committed by Max Katz
parent
commit
77a4f096e7
  1. 15
      src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
  2. 3
      src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

15
src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs

@ -4,9 +4,11 @@ using Avalonia.Platform;
namespace Avalonia.Android.Platform
{
internal class AndroidSystemNavigationManagerImpl : ISystemNavigationManagerImpl
internal class AndroidSystemNavigationManagerImpl : ISystemNavigationManagerImpl, IDisposable
{
public event EventHandler<RoutedEventArgs> BackRequested;
private readonly IActivityNavigationService? _navigationService;
public event EventHandler<RoutedEventArgs>? BackRequested;
public AndroidSystemNavigationManagerImpl(IActivityNavigationService? navigationService)
{
@ -14,6 +16,7 @@ namespace Avalonia.Android.Platform
{
navigationService.BackRequested += OnBackRequested;
}
_navigationService = navigationService;
}
private void OnBackRequested(object sender, AndroidBackRequestedEventArgs e)
@ -24,5 +27,13 @@ namespace Avalonia.Android.Platform
e.Handled = routedEventArgs.Handled;
}
public void Dispose()
{
if (_navigationService != null)
{
_navigationService.BackRequested -= OnBackRequested;
}
}
}
}

3
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

@ -45,7 +45,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform
private readonly AndroidInputMethod<ViewImpl> _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;
}

Loading…
Cancel
Save