2015-01-31 3 views
2

Я только начал разрабатывать приложение Windows Phone 8.1.Windows Phone 8.1: Сохранить список в настройках/хранилище приложений

Приложение позволяет пользователю добавлять «данные» (строки) в свой список избранного. Задайте вопрос сейчас:

Что является лучшим способом сохранить список или отдельные записи в списке, чтобы снова загрузить эти фавориты в следующее начало приложения?

Я думал, что должен сохранить данные в (текстовом) файле, чтобы я мог читать его по строкам и снова объединить список.

Как вы думаете, это лучший способ справиться с чем-то подобным? Я новичок в платформе Windows Phone 8.1, и любая помощь действительно ценится - спасибо!

ответ

1

Я думаю, что, наконец, я получил его на работу. Стоит подумать о чем-то подобном гораздо раньше.

Так я получил асинхронную Task SaveAppSettingsAsync() и назвать его в Суспендирующей-Event и в моем Hardwarebuttons_Pressed-Event, когда приложение закрывается:

private async void OnSuspending(object sender, SuspendingEventArgs e) 
    { 
     var deferral = e.SuspendingOperation.GetDeferral(); 


     await SaveAppSettingsAsync(); 


     deferral.Complete(); 
    } 

private async void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 
     if (rootFrame != null) 
     { 
      e.Handled = true; 
      if (rootFrame.CurrentSourcePageType == typeof(MainPage)) 
      { 
       await SaveAppSettingsAsync(); 

       this.Exit(); 
      } 
      else if (rootFrame.CanGoBack) 
       rootFrame.GoBack(); 
     } 
    } 

Спасибо за помощь. Думаю, мне стало лучше понимать, как обрабатывать асинхронные задачи. Как я уже сказал, я новичок в Windows Phone и никогда раньше не использовал их.

2

Лучший способ зависит от размера данных и ваших потребностей. Что касается сохранения в Настройках, вы можете попытаться создать массив строк при сохранении и составить список при загрузке данных. Простой пример может выглядеть следующим образом:

List<string> favourites = new List<string>(); 
protected void Method() 
{ 
    // save as array 
    ApplicationData.Current.LocalSettings.Values["myList"] = favourites.ToArray(); 

    // retrive your array and make a list from it 
    favourites = ((string[])ApplicationData.Current.LocalSettings.Values["myList"]).ToList(); 
} 

Помните, что поддержка LocalSettings только простые типы и другие ограничения - для получения дополнительной информации take a look at MSDN.

+0

Строки, которые нужно сохранить, составляют около 70 символов - несколько меньше, еще несколько. Не должно быть ограничений на добавление все большего количества избранных с течением времени. Я действительно не нашел ответа: насколько велика может быть List/Array, если я сохраню ее в локальных настройках? – Reality80

+0

@ Reality80 Должно, конечно, обрабатывать строку длиной 70 символов, но я не уверен, что это хорошая идея использовать ее для «бесконечного» количества избранных. Я не тестировал настройки с большим количеством данных, в этом случае я думаю, что файл хранения будет лучше (безопаснее). Я также не знаю о пределе размера, в документах вы найдете ограничения для RoamingSettings, но они не поддерживают LocalSettings. – Romasz

+0

@Romsaz Спасибо. Я уже тестировал этот метод в своем приложении, он работает. Но я также думаю, что это не «правильный» вариант для списка фаворитов без ряда ограничений. Ограничение не имеет большого смысла в моем заявлении. Я уже реализовал код для написания и чтения избранных текстового файла в локальной папке приложения. Но у меня есть проблема с этим: Как я могу создать/записать файл при приостановке приложения? Все методы являются асинхронными, и приложение закрывается перед записью в текстовый файл. Как я могу выполнить эту задачу, чтобы она работала? – Reality80

Смежные вопросы