You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 MAUI中Preferences重启后值不持久化问题求助

.NET 8 MAUI Preferences重启后值丢失的解决办法

针对你遇到的Maui.Storage.Preferences设置后重启丢失的问题,结合你已尝试的方案,给出以下针对性解决思路:

1. 修正SharedName的使用方式

你提到尝试过指定sharedName,但要注意必须使用固定字符串且读写保持一致:

  • 设置时指定固定的sharedName:
    Preferences.Default.Set("user_token", "abc123", "MyApp_Preferences");
    
  • 读取时必须使用同一个sharedName,否则会读取默认的偏好容器:
    var token = Preferences.Default.Get("user_token", "", "MyApp_Preferences");
    

避免使用随机字符串作为sharedName,否则每次启动都会创建新的偏好文件,无法读取之前的数据。

2. 确保偏好值的持久化时机

Android平台下,MAUI的Preferences底层使用SharedPreferences.Apply()异步写入磁盘,如果应用被快速杀死(比如后台清理),可能导致写入未完成。可以通过以下方式优化:

  • 在应用进入后台时(App.OnSleep方法),避免批量设置偏好值;如果必须设置,考虑通过自定义Android代码使用Commit()同步写入(同步操作会阻塞线程,注意不要在UI线程频繁调用)。
  • 避免在后台线程频繁修改偏好值,确保关键值的设置在主线程完成。

3. 排查第三方库冲突

你的项目引入了大量Firebase相关NuGet包,部分Firebase组件(如AppCheck、Auth)可能会修改应用的存储行为或与MAUI的Preferences封装产生冲突。建议:

  • 暂时移除所有Firebase相关包,测试Preferences是否正常工作;
  • 若恢复正常,再逐一添加Firebase包,定位具体冲突组件。

4. 升级MAUI核心包版本

你当前使用的Microsoft.Maui.Controls版本为8.0.92,.NET 8后续补丁版本修复了多个Android平台的Preferences持久化问题。建议升级到最新的.NET 8 MAUI稳定版本(如8.0.210及以上),覆盖现有NuGet包后重新测试。

5. 直接使用Android原生SharedPreferences

若MAUI封装的Preferences始终存在问题,可以绕过封装,直接调用Android原生API确保持久化:

#if ANDROID
using Android.Content;
using Android.Preferences;

public static class NativePreferences
{
    public static void SaveValue(string key, string value)
    {
        var prefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
        using var editor = prefs.Edit();
        editor.PutString(key, value);
        editor.Commit(); // 同步写入磁盘,确保数据持久化
    }

    public static string GetValue(string key, string defaultValue = "")
    {
        var prefs = PreferenceManager.GetDefaultSharedPreferences(Android.App.Application.Context);
        return prefs.GetString(key, defaultValue);
    }
}
#endif

在业务代码中根据平台条件调用该类方法,替代MAUI的Preferences。


内容的提问来源于stack exchange,提问作者TimoFran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:17:02