Xamarin表单共享首选项交叉



我想知道以跨平台的方式操作应用程序设置的最佳解决方案是什么。

在iOS中,我们可以在应用程序之外的设置界面中更改设置,但在windows phone和android中却没有这样的功能。

所以,我的想法是在应用程序中创建一个正常的页面/屏幕,显示我所有的应用程序设置,并有Save()和Get()方法的接口,我可以使用DependencyServices实现特定的每个设备。

这样做对吗?

    Application子类有一个静态属性字典,可以用来存储数据。这可以从Xamarin中的任何地方访问。Application.Current.Properties.
Application.Current.Properties ["id"] = someClass.ID;
if (Application.Current.Properties.ContainsKey("id"))
{
    var id = Application.Current.Properties ["id"] as int;
    // do something with id
}

属性字典自动保存到设备。添加到字典中的数据将在应用程序从后台返回甚至重新启动后可用。Xamarin的。Forms 1.4在Application类上引入了一个额外的方法——SavePropertiesAsync()——可以调用它来主动持久化Properties字典。这是为了让你在重要的更新后保存属性,而不是冒着由于崩溃或被操作系统杀死而无法序列化的风险。

https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/

  • Xamarin的。表单插件,使用本地设置管理。

    • Android: SharedPreferences
    • iOS: NSUserDefaults
    • Windows Phone: isolatedstoragessettings
    • Windows Store/Windows Phone RT: ApplicationDataContainer
  • https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

    我尝试使用Application.Current.Properties字典,但出现了实现问题。

    一个很简单的解决方案是James Montemagno的Xam.Plugin.Settings NuGet。安装NuGet会自动在Settings.cs中创建一个Helpers文件夹。要创建持久化设置,请执行以下操作:

        private const string QuestionTableSizeKey = "QuestionTableSizeKey";
        private static readonly long QuestionTableSizeDefault = 0;
    

        public static long QuestionTableSize
        {
            get
            {
                return AppSettings.GetValueOrDefault<long>(QuestionTableSizeKey, QuestionTableSizeDefault);
            }
            set
            {
                AppSettings.AddOrUpdateValue<long>(QuestionTableSizeKey, value);
            }
        }
    

    应用程序中的访问和设置如下:

    namespace XXX
    {
        class XXX
        {
            public XXX()
            {
                    long myLong = 495;
                    ...
                    Helpers.Settings.QuestionTableSize = myLong;
                    ...
                    long oldsz = Helpers.Settings.QuestionTableSize;                   
            }
        }
    }
    

    相关内容

    • 没有找到相关文章

    最新更新