Xamarin. Сохранение значений при смене состояния приложения
Часто может потребоваться сохранять какие-то значения при смене состояния приложения, а именно в методах OnStart, OnSleep и OnResume. Для этого мы будем использовать Application.Current.Properties (иногда его называют Properties dictionary - словарь свойств), которые доступны из любого места приложения Xamarin.
Значения словаря доступны по string-ключу и сохраняют object-значения. Object-значения могут принимать, как int-значение (пример 1), string-значение (пример 2) и другие простые типы данных.
Пример 1. Int-значение
Пример 2. String-значение
Словарь автоматически сохраняется на устройстве. Данные, добавленные в словарь, будут доступны, когда приложение вернется из фона или даже после его перезапуска.
Xamarin.Forms 1.4 представил дополнительный метод для класса Application - SavePropertiesAsync(), который можно вызвать для сохранения словаря Properties. Это позволит сохранять свойства после важных обновлений, а не рисковать тем, что они не будут сериализованы из-за сбоя или могут быть убиты ОС.
Значения словаря доступны по string-ключу и сохраняют object-значения. Object-значения могут принимать, как int-значение (пример 1), string-значение (пример 2) и другие простые типы данных.
Пример 1. Int-значение
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Установка свойтсва - в любом месте кода, часто в 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 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Сохраняем имя пользователя - значение берем из поля username | |
Application.Current.Properties ["username"] = username.Text; | |
//Возвращаем значение до его отображения | |
if (Application.Current.Properties.ContainsKey("username")) | |
{ | |
var uname = Application.Current.Properties ["username"] as string ?? ""; | |
username.Text = uname; | |
} |
Комментарии
Отправить комментарий