xamarin.forms - 在 Xamarin 中,使用 Navigation.RemovePage() 时如何避免内存泄漏

标签 xamarin.forms uwp xamarin.uwp

在我的 Xamarin 应用程序中,我有五个页面,第 1 页、第 2 页、第 3 页、第 4 页和第 5 页。从第 5 页导航到第 3 页时,我调用了 Navigation.RemovePage() 以删除 NavigationStack 中的第 4 页。但是,在调用 RemovePage() 时存在巨大的内存泄漏。我想知道在尝试删除 NavigationStack 中两个页面之间的页面时是否有任何解决方法可以避免内存泄漏? (因为第 3 页不是根页,所以我不能使用 PopToRootAsync())
此外,任何人都可以向我解释为什么使用 PushModalAsync() 会删除 NavigationStack 中的所有页面,并且只保留当前添加的页面以及 NavigationStack 和 ModalStack。
非常感谢。

最佳答案

In Xamarin, how to avoid memory leak when using Navigation.RemovePage()


在测试过程中,当RemovePage时不会泄漏内存。方法被调用。
private void Button_Clicked(object sender, EventArgs e)
{
    Navigation.RemovePage( Navigation.NavigationStack.Where(a=> a is Page4).FirstOrDefault());
}

anyone can explains me why using PushModalAsync() will remove all pages in NavigationStack and only leaves the current added page and in both NavigationStack and ModalStack.


匹配的 PushModalAsync UWP 平台中的导航行为显示 ContentDialog .并且不会影响NavigationStack以下是测试代码。
private void PushClick(object sender, EventArgs e)
{
    Navigation.PushModalAsync(new MainPage());
    foreach (var item in Navigation.NavigationStack)
    {
        System.Diagnostics.Debug.WriteLine(item.GetType().Name);
    }
}
有关完整的代码示例,请参阅此 link .

关于xamarin.forms - 在 Xamarin 中,使用 Navigation.RemovePage() 时如何避免内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63059758/

相关文章:

c# - 错误 XDG0008 : NumberBox is not supported in a Universal Windows Platform project

xamarin - UWP : Payload contains two or more files with the same destination path

Xamarin 表单条目 : Use comma as decimal separator

具有 Web API 和 native 应用程序的 Azure ADAL

azure - 如何为 UWP 启用应用服务移动应用 SSO

c# - UWP 如何在 GridView 中单击自定义项

c# - Xamarin Forms MVVM更新不适用于UWP

c# - Xamarin 形式 : tooltip in windows app

c# - 如何清除所选项目 Xamarin 列表

xamarin.forms - StackLayout 两列,每列占用一半的空间