Windows 8–Application Data

Aplikasi Windows 8 dapat memiliki tempat penyimpanan yang terisolasi, yang hanya dapat diakses oleh aplikasi tersebut. Dalam Windows Phone dan Silverlight hal ini dikenal dengan sebutan IsolatedStorage. Konsep serupa juga dimiliki oleh aplikasi Window 8-style UI dimana masing-masing aplikasi memiliki sejumlah kuota untuk menyimpan berkas-berkas spesifik yang hanya ingin diketahui atau diakses oleh satu aplikasi.

Terdapat dua penyimpanan yaitu lokal (pada perangkat keras) dan roaming .

Untuk melihat bagaimana implementasi application data dalam aplikasi, buatlah sebuah proyek baru, aplikasi Windows Store dengan template Blank App,beri nama Program_ApplicationData.

image

1. Hapus dahulu berkas MainPage.xaml lalu tambahkan sebuah Page bertipe Basic Page lalu beri nama MainPage.xaml. Halaman baru ini akan menjadi halaman pertama aplikasi

image

2. Tambahkan blok kode dibawah ini pada MainPage.xaml tepat sebelum tag <VisualStateManager>.<VisualStateGroups>

<StackPanel Grid.Row=”1″ Margin=”120,30,0,0″ >

<Button Click=”Button_Click_1″>save</Button>

<TextBox Width=”400″ HorizontalAlignment=”Left” x:Name=”inputText”></TextBox>

<TextBox Width=”400″ HorizontalAlignment=”Left” x:Name=”inputText2″></TextBox>

<TextBox Width=”400″ HorizontalAlignment=”Left” x:Name=”inputText3″></TextBox>

<Button Margin=”0,20,0,0″ Click=”Button_Click_2″>open</Button>

<TextBlock x:Name=”outputText2″ Style=”{StaticResource HeaderTextStyle}”/>

<TextBlock x:Name=”outputText3″ Style=”{StaticResource HeaderTextStyle}”/>

<TextBlock x:Name=”outputText4″ Style=”{StaticResource HeaderTextStyle}”/>

</StackPanel>

3. Tambahkan deklarasi ApplicationDataContainer. Variabel ini akan menjadi referensi, tempat kita menyimpan data pada penyimpanan lokal aplikasi.

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)

{

localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

}

Windows.Storage.ApplicationDataContainer localSettings;

4. Untuk menyimpan dan membaca data yang disimpan ke dalam kontainer lokal tambahkan blok kode berikut

private async void SaveSettingAsync(string settingKey,string settingValue,ApplicationDataContainer settings)

{

settings.Values[settingKey] = settingValue;

}

private async Task<String> LoadSettingAsync(string settingKey, ApplicationDataContainer settings)

{

return settings.Values[settingKey].ToString();

}

ApplicationDataCointainer memiliki anggota Values yang bekerja seperti Dictionary di .NET framework. Untuk menyimpan data kita cukup menambahkan kata kunci untuk mengacu nilai tersebut.

5. Untuk menyimpan dan membaca data atomik yang disimpan ke dalam kontainer lokal tambahkan blok kode berikut.

private async void SaveSettingCompositeAsync(string settingKey,string settingValue,ApplicationDataContainer settings)

{

ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue();

composite[“intVal”] = 1;

composite[“strVal”] = settingValue;

settings.Values[settingKey] = composite;

}

private async Task<ApplicationDataCompositeValue> LoadSettingCompositeAsync(string settingKey, ApplicationDataContainer settings)

{

ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)settings.Values[settingKey];

if (composite == null)

return null;

else

return composite;

}

Untuk menyimpan suatu nilai atomic tanpa harus membentuk tipe bentukan kita dapat menggunakan kelas ApplicationDataCompositeValue. Kelas ini dapat menampung sejumlah nilai dan disimpan dengan menggunakan kata kunci. Selanjutnya nilai yang disimpan dapat diacu menggunakan kata kunci yang sesuai.

6. Di dalam ApplicationDataCointainer kita dapat membuat kontainer-kontainer lain untuk membuat semacam grup penyimpanan nilai konfigurasi. Untuk melakukannya berikut contoh penggunaan kontainer pada ApplicationDataContainer.

private async void SaveSettingViaContainerAsync(string settingKey,string settingValue, string settingContainer,ApplicationDataContainer settings)

{

ApplicationDataContainer container = settings.CreateContainer(settingContainer, ApplicationDataCreateDisposition.Always);

if (settings.Containers.ContainsKey(settingContainer))

{

settings.Containers[settingContainer].Values[settingKey] = settingValue;

}

}

private async Task<String> LoadSettingViaContainerAsync(string settingKey, string settingContainer, ApplicationDataContainer settings)

{

bool hasContainer = settings.Containers.ContainsKey(settingContainer);

if (hasContainer)

{

return settings.Containers[settingContainer].Values[settingKey].ToString();

}

else

return null;

}

7. Untuk mencoba beberapa fungsi diatas tempat kan blok kode berikut pada event handler Button 1 dan Button 2.

private async void Button_Click_1(object sender, RoutedEventArgs e)

{

SaveSettingAsync(“setting1”,inputText.Text, localSettings);

SaveSettingCompositeAsync(“setting2”,inputText2.Text, localSettings);

SaveSettingViaContainerAsync(“setting1”,inputText3.Text, “container”, localSettings);

}

private async void Button_Click_2(object sender, RoutedEventArgs e)

{

outputText2.Text = await LoadSettingAsync(“setting1”, localSettings);

ApplicationDataCompositeValue compositeValue = await LoadSettingCompositeAsync(“setting2”, localSettings);

outputText3.Text = compositeValue[“strVal”].ToString();

outputText4.Text = await LoadSettingViaContainerAsync(“setting1″,”container”, localSettings);

}

8. Tekan F5 untuk melihat hasilnya. Berikan nilai pada TextBox pertama,kedua dan ketiga. Lalu tekan save. Kemudian tekan open untuk melihat hasilnya.

image

Perhatikan meskipun kita menyimpan dua nilai dengan satu kata kunci yang sama yaitu setting1 namun nilai nya tidak akan saling overlap , karena penyimpanan yang kedua disimpan di kontainer yang berlainan.

Kita juga dapat menggunakan penyimpanan lokal untuk menyimpan berkas. Untuk mendapatkan referensi terhadap direktori yang akan digunakan aplikasi , panggil fungsi Windows.Storage.ApplicationData.Current.LocalFolder . Setelah mendapatkan acuan ke direktori yang digunakan, berbagai fungsi pada subbab Operasi File Windows RT dapat digunakan. Jika kita menggunakan direktori pada ApplicationData maka hanya aplikasi kita saja yang dapat mengakses berkas yang tersimpan di dalamnya.

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