拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
Windowsストアアプリに挑戦(その4・アプリデータの保存)
アプリケーションが終了する際にデータを保存して、次回に起動する時にそのデータを復元することは、一般的な処理です。
Windowsストアアプリでは、「アプリデータ」と「セッションデータ」の2通りのデータを保存することができます。
今日は、アプリデータの保存と復元の方法を紹介します。
1.アプリデータの保存
アプリデータは、大まかに言えば、ユーザーが意図的にアプリを終了したときに、保存しておきたいデータです。
アプリデータの保存は、以下のようなコードで行うことができます。
「キー」で保存したいデータの名前を指定します。
var appData = Windows.Storage.ApplicationData.current; var roamingSettings = appData.roamingSettings; roamingSettings.values["キー"] = 値;
アプリデータの保存は、アプリが終了する直前に行うこともできます。
ただ、終了直前の処理は5秒間しか行うことができません。
そこで、終了直前ではなく、データに変化があったらその都度保存するようにします。
たとえば、以前に紹介したHello, Worldメッセージのアプリの場合だと、「送信」ボタンがクリックされた時点で、ユーザー名をアプリデータに保存することが考えられます。
そこで、「送信」ボタンのイベントハンドラに、アプリデータを保存する処理を追加します。
以下のリストの7~9行目が追加した部分です。
ユーザー名を「userName」というアプリデータに保存しています。
function clickHandler(e) { var u = document.getElementById('user').value; if (u) { var msg = 'Hello, ' + u; document.getElementById('msg').innerHTML = msg; var appData = Windows.Storage.ApplicationData.current; var roamingSettings = appData.roamingSettings; roamingSettings.values["userName"] = u; } else { var alt = new Windows.UI.Popups.MessageDialog('名前を入力してください。'); alt.showAsync(); } }
2.アプリデータの復元
アプリデータの復元は、Activatedイベントのハンドラの中で行います。
アプリデータの保存のときと同様にしてroamingSettingsを得て、そこからデータを読み込みます。
Hello,Worldアプリの場合だと、Activatedイベントハンドラを以下のように書き換えます。
12~19行目が、アプリデータを復元する処理です。
12~14行目で、アプリデータの「userData」(ユーザー名)を、変数uに読み込みます。
そして、変数uに値があれば、input要素にそのユーザー名をセットし(16行目)、またメッセージも書き換えます(17~18行目)。
app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) { // TODO: このアプリケーションは新しく起動しました。ここでアプリケーションを // 初期化します。 } else { // TODO: このアプリケーションは中断状態から再度アクティブ化されました。 // ここでアプリケーションの状態を復元します。 } args.setPromise(WinJS.UI.processAll()); var appData = Windows.Storage.ApplicationData.current; var roamingSettings = appData.roamingSettings; var u = roamingSettings.values["userName"]; if (u) { document.getElementById('user').value = u; var msg = 'Hello, ' + u; document.getElementById('msg').innerHTML = msg; } var btn = document.getElementById('send'); btn.addEventListener('click', clickHandler, false); } };
3.「Windowsストアアプリに挑戦」の記事の一覧
「Windowsストアアプリに挑戦」のその他の記事は、以下のリンクから参照できます。
- Windowsストアアプリに挑戦(その1・何もしないアプリケーション)
- Windowsストアアプリに挑戦(その2・HTMLとCSSの変更)
- Windowsストアアプリに挑戦(その3・テキストボックスとボタンを付ける)
- Windowsストアアプリに挑戦(その4・アプリデータの保存)