Menyimpan Data secara Lokal pada Windows Phone

Pada blogpost sebelumnya telah dibahas bagaimana kita dapat memanfaatkan data dari suatu web service untuk dikonsumsi di dalam aplikasi Windows Phone kita, termasuk cara yang elegan untuk menampilkan data tersebut menggunakan DataBinding. Lalu bagaimana jika kita ingin menyimpan data ke dalam Windows Phone device ? Jawabannya adalah IsolatedStorage. Isolated Storage adalah tempat penyimpanan lokal yang dapat digunakan untuk keperluan penyimpanan pada aplikasi Windows Phone. Dikatakan Isolated karena hanya satu aplikasi saja yang dapat memanfaatkannya. Jika memang membutuhkan dua atau lebih aplikasi untuk bertukar data, sebaiknya menggunakan skema cloud.

Ketika sebuah aplikasi berjalan, aplikasi bekerja dengan sejumlah data. Beberapa diantaranya bersifat temporary dan hanya diperlukan pada sesi tertentu. Beberapa diantaranya tidak dan perlu disimpan. Untuk itulah Isolated Storage berguna. Seluruh operasi IO harus menggunakan IsolatedStorage dan tentu saja demi keamanan aplikasi tidak dapat mengakses operating system storage dan space yang dimiliki aplikasi lain. Gambar dibawah ini menunjukkan struktur penyimpanan pada aplikasi di Windows Phone.

clip_image002

Terdapat dua bagian penyimpanan, yaitu filefolder standar dan berkas khusus untuk menyimpan setting dari aplikasi.

Perlu diketahui bahwa storage space pada mobile device sangat terbatas. Namun Windows Phone tidak membatasi kuota untuk tiap aplikasi agar memberikan fleksibilitas yang tinggi bagi para developer. Namun tentunya sebagai developer, kita harus dapat memperhitungkan seberapa besar storage yang akan dipergunakan dengan bertanggung jawab. Setiap temporary file harus segera dihapus dan berikan kebebasan bagi user untuk dapat menghapus apa yang sudah disimpannya. Akan lebih baik jika memberikan transparansi bagi pengguna, membiarkan pengguna mengetahui seberapa banyak ia telah menggunakan space pada mobile device. Tentu saja kita dapat memikirkan mekanisme penyimpanan data pengguna di-cloud apakah itu di server miliki aplikasi kita atau di tempat pihak ketiga. Biarkan aplikasi pada device bersifat thin sehingga nyaman digunakan. Apakah ada pengguna yang mau menggunakan aplikasi yang menghabiskan banyak tempat di mobile device-nya ? That’s how smartphone became not smart anymore J.

IsolatedStorage untuk File

1. Klik kanan pada Project, Add New Item dan Pilih Windows Phone Portrait Page dan beri nama sesuai dengan keinginan anda, pada contoh ini adalah IsolatedStorage.xaml lalu pilih Add.

clip_image004

2. Tambahkan satu buat textbox dan sebuah button. Nantinya button click event akan menyimpan string pada textbox sebagai input ke dalam isolated storage.

clip_image006

3. Berikutnya tambahkan sebuah textblock dan sebuah button. Pada button yang kedua kita akan memanggil string apapun yang sudah disimpan dalam isolatedstorage.

clip_image008

4. Sekarang double-click pada button pertama untuk menangani penyimpanan data ke dalam isolatedstorage. Tambahkan dua namespace berikut :

private void button1_Click(object sender, RoutedEventArgs e)

        {

            IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

            isf.CreateDirectory("Data");

            StreamWriter sw = new StreamWriter(new IsolatedStorageFileStream("Data\myfile.txt", FileMode.Create, isf));

            sw.WriteLine(textBox1.Text);

            sw.Close();

        }

Yang dilakukan oleh kode diatas adalah memanggil IsolateStorage spesifik untuk aplikasi , kemudian membuat sebuah folder bernama Data. Pembuatan folder dapat dimaksudkan untuk kemudahan organisasi data. Kemudian pada baris berikutnya membuat sebuah stream writer dengan masukan sebuah file isolatedstorage lalu menyimpan nilai dari textBox1. Cukup straighforward.

5. Selanjutnya double-click pada button kedua untuk menangani pembacaan data dari isolatedstorage tersebut. Ketikkan kode berikut ini :

private void button2_Click(object sender, RoutedEventArgs e)

   {

       IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();

       StreamReader sr = null;

       try

       {

           sr = new StreamReader(new IsolatedStorageFileStream("Data\myfile.text",FileMode.Open,isf));

           textBlock1.Text = sr.ReadLine();

           sr.Close();

       }

       catch (Exception ex)

       {

           MessageBox.Show("error");

       }

   }

6. Tekan F5 dan mari kita lihat bagaimana aplikasi bekerja.

clip_image010 clip_image012

IsolatedStorage untuk Application Setting

Beberapa aplikasi memerlukan masukan dari pengguna yang harus disimpan untuk digunakan kembali ketika aplikasi akan dijalankan. Skenario ini berlaku misalnya untuk preferences, URL atau informasi umum. Seperti aplikasi .NET lainnnya , aplikasi Windows Phone juga mendukung penyimpanan application setting. Untuk keperluan ini dapat menggunakan IsolatedStorageSettings.ApplicationSettings. Application Setting sendiri merupakan instansiasi dari IEnumerable.

1. Tidak perlu membuat halaman baru mari kita gunakan saja kembali IsolatedStorage.xaml untuk keperluan ini. Pada event handler button pertama ubah kodenya menjadi seperti dibawah ini :

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

settings.Add("duration", "daily");

settings.Save();

Kode diatas cukup straightforward : kita melakukan pemanggilan instansiasi dari ApplicationSetting , menambahkan sebuah nilai dan key serta menyimpannya.

2. Pada event handler button kedua ubah kodenya menjadi seperti ini :

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

            string value = "";

            try

            {

                settings.TryGetValue("duration", out value);

                MessageBox.Show(value.ToString());

            }

            catch

            {

                MessageBox.Show("error");

            }

Kode diatas akan melakukan pemanggilan instansiasi dari applicationsetting, mencoba mendapatkan nilai duration dan menampilkannya dengan MessageBox.

3. Tekan F5 dan perhatikan hasilnya.

clip_image014 clip_image016

Tekan tombol pertama untuk menyimpan setting dari aplikasi tersebut. Tampak tidak terjadi apa-apa tapi percayalah setting tersebut berhasil disimpan. Untuk membuktikannya tekan tombol kedua dan akan menampilkan MessageBox berisikan nilai yang disimpan pada setting aplikasi.

Beberapa tips untuk berurusan dengan IsolatedStorageSettings :

  1. Usaha untuk memperoleh suatu nilai dari IsolatedStorageSetting akan melemparkan nilai error jika nilai tersebut belum pernah dimasukkan sebelumnya. Pastikan setting sudah diinisialisasi atau SELALU cek menggunakan .Contain
  2. Kita dapat menyimpan data apapun pada setting namun jangan lupa untuk melakukan casting kembali ketika nilai tersebut hendak digunakan

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s