Xamarin Forms Sharedpreferences крест
Я хотел бы знать, что является лучшим решением для управления настройками приложения кросс-платформенным способом.
В iOS мы можем изменить настройки вне приложения на экране настроек, но у нас его нет в Windows Phone и Android.
Итак, моя идея - создать обычную страницу/экран внутри приложения, отображающую все настройки моего приложения, и иметь интерфейс с методами Save() и Get(), которые я могу реализовать на каждом устройстве с помощью DependencyServices.
Правильно ли это сделать?
Ответы
Ответ 1
- В подклассе Application есть статический словарь свойств, который может использоваться для хранения данных. Это можно получить из любого места вашего кода Xamarin.Forms, используя 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()
- который можно вызвать для проактивного сохранения словаря свойств. Это позволит вам сохранять свойства после важных обновлений, а не рисковать тем, что они не будут сериализованы из-за сбоя или быть убиты ОС.
https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/
-
Плагин Xamarin.Forms, который использует собственное управление настройками.
- Android: SharedPreferences
- iOS: NSUserDefaults
- Windows Phone: IsolatedStorageSettings
- Windows Store/Windows Phone RT: ApplicationDataContainer
https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings
Ответ 2
Я попытался использовать словарь Application.Current.Properties и имел проблемы с реализацией.
Решение, которое работало с очень небольшим усилием, было Джеймс Монтеманьо Xam.Plugin.Settings NuGet. GitHub Установка NuGet автоматически создает папку помощников с параметрами Settings.cs. Чтобы создать постоянную настройку, выполните следующие действия:
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;
}
}
}