Xamarin.Forms应用程序属性未删除密钥

时间:2019-07-12 21:01:56

标签: xamarin 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。

1 个答案:

答案 0 :(得分:0)

我建议您使用Xamarin Essentials Preferences

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

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

Reference