首页 > 解决方案 > Xamarin.Forms 应用程序属性不删除键

问题描述

在一个页面中,我从我的应用程序属性中删除了一个键:

async void SaveAndClose()
{
    Application.Current.Properties.Remove(FOO_KEY);
    await Application.Current.SavePropertiesAsync();    

    foreach (var key in Application.Current.Properties.Keys;)
    {
        Debug.WriteLine($"Key in properties: {key}"); //FOO_KEY is missing, good!
    }
    await Navigation.PopModalAsync();
}

一切似乎都在正常工作。钥匙不见了,只剩下其他东西了。但是,如果我将以下内容放在以下出现的页面中Navigation.PopModalAsync

protected override async void OnAppearing()
{
    base.OnAppearing();
    foreach (var key in Application.Current.Properties.Keys;)
    {
        Debug.WriteLine($"Key in properties: {key}"); //FOO_KEY is back!
    }
}

突然间,键和它的值都返回了!是什么导致字典不保存自己?由于文档显示Application.Properties“只是”一个 IDictionary,因此没有列出任何陷阱。这是怎么回事?

我正在使用 Xamarin 4.12.3.83。

标签: c#xamarinxamarin.forms

解决方案


我建议您使用Xamarin Essentials 首选项

仅当您卸载应用程序时才会删除应用程序属性

或者如果您仍然想删除,您可能必须在 android 上设置 autobackup false 并且不要将 iPhone 链接到 iCloud。对于首选项,您还需要将其设置为 false 以便永久删除它。

参考


推荐阅读