diff --git a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFragmentContainer.cs b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFragmentContainer.cs index cb70a311e599..6c103bc614f8 100644 --- a/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFragmentContainer.cs +++ b/src/Controls/src/Core/Compatibility/Handlers/Shell/Android/ShellFragmentContainer.cs @@ -35,9 +35,10 @@ public override void OnDestroyView() { base.OnDestroyView(); ((IShellContentController)ShellContentTab).RecyclePage(_page); - // Recursively disconnect handlers on the page and its child elements - // to prevent memory leaks when Shell items are cleared - _page?.DisconnectHandlers(); + // Only disconnect when ShellContent is removed from the Shell hierarchy (e.g. Shell.Items.Clear()). + // During normal navigation the page is still cached and will be reused. + if (ShellContentTab?.FindParentOfType() == null) + _page?.DisconnectHandlers(); _page = null; } }