c# - 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。
解决方案
我建议您使用Xamarin Essentials 首选项
仅当您卸载应用程序时才会删除应用程序属性
或者如果您仍然想删除,您可能必须在 android 上设置 autobackup false 并且不要将 iPhone 链接到 iCloud。对于首选项,您还需要将其设置为 false 以便永久删除它。
推荐阅读
- python - 试图从网站获取数据但没有来
- azure-active-directory - 如何使用 ms graph api 仅列出 AAD 中的特定组?
- javascript - 比较两个 JSON 对象并验证数据不匹配
- javascript - 带日期的 SQL 查询在节点 mssql 中返回日期时间
- php - 在 jenkins 容器中安装 php 和 composer
- ofx - 如何在 Power BI 中解析 a-ofx-version-1-0-2-file?
- c++ - 在 C++ 中初始化一个数组
- python - 我的删除功能中的逻辑有问题吗?
- uml - Enterprise Architect:如何将多条概括线组合成一条线
- java - Android 问题:如何以编程方式在文本视图周围创建边框(不使用任何 XML)?