Как я могу сохранить элементы списка, даже если я перезапущу приложение?

Как я могу сохранить элементы списка, даже если я перезапустить приложение в приложении Windows Phone. Я хочу, чтобы они были каким-то образом сохранены в файле, а затем прочитаны при следующем запуске приложения. Пожалуйста, помогите.. Хорошо, я обновляюсь с кодом:

открытый частичный класс MainPage: PhoneApplicationPage {#region VariableDeclaration

    DispatcherTimer timer = new DispatcherTimer();
    WebClient client = new WebClient();
    WebBrowserTask Facebook = new WebBrowserTask();
    WebBrowserTask YouTube = new WebBrowserTask();
    WebBrowserTask Odnoklassniki = new WebBrowserTask();
    WebBrowserTask Vkontakte = new WebBrowserTask();
    List<ItemFormat> Items = new List<ItemFormat>();
    DispatcherTimer PopulateIsoFile = new DispatcherTimer();
    string SongBuffer;
    int c = 1;
    string Time;

    #endregion

    #region AppInit
    // Constructor
    public MainPage()
    {
        InitializeComponent();
        if (Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation.IsNetworkAvailable == false)
        {
            MessageBox.Show("No internet connection", "Error", MessageBoxButton.OKCancel);
        }
        else
        {
            if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)
            {
                PauseBtn.Visibility = Visibility.Visible;
                PlayBtn.Visibility = Visibility.Collapsed;
            }
            else
            {
                BackgroundAudioPlayer.Instance.Track = new AudioTrack(new Uri("http://air-online2.hitfm.md/hitfm.mp3"), "HITFM", "Включи себя", null, null);
                PlayBtn.Visibility = Visibility.Visible;
                PauseBtn.Visibility = Visibility.Collapsed;
            }
            BackgroundAudioPlayer.Instance.PlayStateChanged += Instance_PlayStateChanged;
            SlideView.Begin();
            SlideView.Completed += SlideView_Completed;
            SlideView.AutoReverse = true;
        }
        timer.Interval = TimeSpan.FromSeconds(30);
        timer.Tick += timer_Tick;
        timer.Start();
        Loaded += timer_Tick;
    }

#region DownloadTrackInfo

    void timer_Tick(object sender, EventArgs e)
    {

        try
        {
            client.Encoding = System.Text.Encoding.UTF8;
            client.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.Now.ToString();
            client.DownloadStringAsync(new Uri("http://air-online2.hitfm.md/status_hitfm.xsl"));
            client.DownloadStringCompleted += client_DownloadStringCompleted;
        }
        catch (System.Net.WebException)
        {
        }
    }

    void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            string[] raw = e.Result.Substring(166).Split('-');
            if (raw[0].Contains(":"))
            {
                Artist.Text = raw[0].Replace(":", string.Empty).Substring(0, raw[0].Length - 1);
                Title.Text = raw[1].Substring(1);
            }
            else
            {
                Artist.Text = raw[0];
                Title.Text = raw[1].Substring(1);
            }
            TitleProgress.Visibility = Visibility.Collapsed;
            Title.Foreground = new SolidColorBrush(Colors.White);
            Artist.Foreground = new SolidColorBrush(Colors.White);
            if (DateTime.Now.Minute < 10)
            {
                Time = "0" + DateTime.Now.Minute.ToString();
            }
            else
            {
                Time = DateTime.Now.Minute.ToString();
            }
            ItemFormat Item = new ItemFormat(e.Result.Substring(166).Replace(":", string.Empty), c, DateTime.Now.Hour.ToString() + ":" + Time);
            if ((!(Item.Song == SongBuffer)) || (Recent.Items.Count == 0))
            {
                Recent.Items.Add(Item);
                SongBuffer = Item.Song;
                c += 1;
            }
        }
        catch (System.SystemException)
        {

        }
    }    

}

public class ItemFormat
{
    public string Song { get; set; }
    public int Count { get; set; }
    public string Time { get; set; }
    public ItemFormat(string Song, int count, string time)
    {
        this.Song = Song;
        this.Count = count;
        this.Time = time;
    }
 }

}

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

1 ответ

Решение

Существует несколько способов хранения данных между "сессиями":

  • Использование файлов в IsolatedStorage сериализовать / десериализовать из.
  • С помощью IsolatedStorageSettings для той же цели, но с меньшим количеством данных.
  • Используя базу данных, SQL CE или sqlite

Я предлагаю вам использовать первый метод, потому что он самый простой, и вы получите наименьшее количество ошибок с ним. Просто сериализуйте данные в файл, когда вам это нужно, при закрытии приложения или при его изменении. Затем вы загружаете данные при запуске из файла (если он существует) и заполняете первоначальный список.

Другие вопросы по тегам