在一页中,我从应用程序属性中删除了一个键:
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。
答案 0 :(得分:0)
我建议您使用Xamarin Essentials Preferences
仅当您卸载应用程序时,应用程序属性才会被删除
,或者如果您仍要删除,则可能必须在android上将autobackup设置为false,而不是将iPhone链接到iCloud。对于首选项,您还需要将其设置为false以便永久删除。