Browse Source
unsubscribe android back handler when toplevel is disposed (#13831)
pull/13848/head
Emmanuel Hansen
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
14 additions and
2 deletions
-
src/Android/Avalonia.Android/Platform/AndroidSystemNavigationManager.cs
-
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.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<RoutedEventArgs>? 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; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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; |
|
|
|
} |
|
|
|
|