使用Application.Current.Properties存储数据重启后无法读取如何解决
问题原因
- 键名不匹配:你存储用户信息时使用的键是
Utente,但读取时判断的键是Username,两个键名完全不一致,自然无法命中判断逻辑。 - 未执行持久化保存:
Application.Current.Properties的修改默认只保存在内存中,必须显式调用异步保存方法才会写入本地存储,应用重启后内存数据释放,就无法读到之前的赋值。
解决方案
- 首先修正存储逻辑,添加持久化保存代码:
Application.Current.Properties["Utente"] = App.UTENTE; Application.Current.Properties["Token"] = App.TOKEN; // 新增持久化调用,确保数据写入本地存储 await Application.Current.SavePropertiesAsync();
注意SavePropertiesAsync是异步方法,建议放在应用的异步生命周期回调(如OnStart)中执行,避免同步阻塞导致的死锁问题
- 修正读取逻辑的判断键名,和存储时保持一致,同时添加空值校验避免异常:
if (Application.Current.Properties.ContainsKey("Utente") && Application.Current.Properties.ContainsKey("Token")) { UTENTE = Application.Current.Properties["Utente"]?.ToString(); TOKEN = Application.Current.Properties["Token"]?.ToString(); // 非空校验通过再执行后续逻辑 if (!string.IsNullOrEmpty(UTENTE) && !string.IsNullOrEmpty(TOKEN)) { DependencyService.Register<MockDataStore>(); InitializeComponent(); MainPage = new MainPageLogin(); } }
内容的提问来源于stack exchange,提问作者user16937336
相关产品推荐
相关产品推荐

