Как обычные люди должны сохранять настройки в приложении Windows Phone 8?
Я сейчас пишу приложение для Windows Phone 8, поэтому я могу захватить столь популярную 3-процентную долю на рынке, и у меня есть трудности с сохранением пользовательских настроек в приложении.
Я впервые столкнулся с этим блогом, в котором рассказывается об основах пространства имен Windows.Storage, которое предназначено именно для этого. Ура!
Однако, я думаю, автор никогда не запускал свой собственный код, так как в противном случае он знал бы, что второе вы вызываете ApplicationData.Current.LocalSettings
, вы получите исключение NotImplementedException
. К MSDN мы идем!
Хорошо, это совершенно ясно, что этот API не реализован на Windows Phone 8. Я пришел к такому выводу, когда он сказал: "Этот API не реализован и будет вызывать исключение, если вызвано". - Хорошо, что здорово.
Итак, возможно, есть и другие подобные API. После немного больше Googling, я наткнулся на этот блог. Он называется "Windows 8 Apps - должен знать трюки!". Это выглядит официально! Он охватывает всевозможные действительно интересные API-интерфейсы устойчивости, включая постоянное и временное хранилище, хранилище роуминга и т.д.
Но угадайте, что: RoamingFolder
, RoamingSettings
, TemporaryFolder
, LocalSettings
- Ни один из них не реализован на Windows Phone 8.
Выполняли ли эти несколько ключевые функции просто проскользнуть? Должен ли я создавать локальную базу данных SQL для хранения базовых параметров приложения или есть что-то простое, чего я не нахожу?
Ответы
Ответ 1
Ага! Выяснил это. Я выкопал документы Windows Phone 7 API, а устаревшие API на самом деле все еще работают и на Windows Phone 8.
public static void Session_PersistSession(string ticket)
{
if (IsolatedStorageSettings.ApplicationSettings.Contains("SessionTicket"))
{
IsolatedStorageSettings.ApplicationSettings["SessionTicket"] = ticket;
}
else
{
IsolatedStorageSettings.ApplicationSettings.Add("SessionTicket", ticket);
}
IsolatedStorageSettings.ApplicationSettings.Save();
}
public static string Session_LoadSession()
{
string ticket;
if (IsolatedStorageSettings.ApplicationSettings.TryGetValue<String>("SessionTicket", out ticket))
{
return ticket;
}
return null;
}
Ответ 2
Несколько вариантов здесь....
Также это может предоставить немного больше контекста: Как сохранить и восстановить состояние приложения для Windows Phone