Xamarin. Сохранение значений при смене состояния приложения

Часто может потребоваться сохранять какие-то значения при смене состояния приложения, а именно в методах OnStart, OnSleep и OnResume. Для этого мы будем использовать Application.Current.Properties (иногда его называют Properties dictionary - словарь свойств), которые доступны из любого места приложения Xamarin.
Значения словаря доступны по string-ключу и сохраняют object-значения. Object-значения могут принимать, как int-значение (пример 1), string-значение (пример 2) и другие простые типы данных.
Пример 1. Int-значение

//Установка свойтсва - в любом месте кода, часто в OnDisappearing методе страницы или в OnSleep методе)
Application.Current.Properties ["id"] = someClass.ID;
//В методах OnStart или OnResume можно использовать это значение, чтобы образом восстановить данные
if (Application.Current.Properties.ContainsKey("id"))
{
var id = Application.Current.Properties ["id"] as int;
// использование полученного значения id
}
Пример 2. String-значение
//Сохраняем имя пользователя - значение берем из поля username
Application.Current.Properties ["username"] = username.Text;
//Возвращаем значение до его отображения
if (Application.Current.Properties.ContainsKey("username"))
{
var uname = Application.Current.Properties ["username"] as string ?? "";
username.Text = uname;
}
Словарь автоматически сохраняется на устройстве. Данные, добавленные в словарь, будут доступны, когда приложение вернется из фона или даже после его перезапуска. Xamarin.Forms 1.4 представил дополнительный метод для класса Application - SavePropertiesAsync(), который можно вызвать для сохранения словаря Properties. Это позволит сохранять свойства после важных обновлений, а не рисковать тем, что они не будут сериализованы из-за сбоя или могут быть убиты ОС.

Комментарии

Популярные сообщения