設定の読み込みと保存

アプリの基本設定やその他の設定を格納したり、それらにアクセスしたり、自動同期を使ってこのデータをコンピューター間で共有したりできます。

設定の保存と読み込みについて考える際には、最初に Windows 8.1 と Windows Phone 8.1 のアプリケーションのライフサイクルについて簡単に理解しておく必要があります。具体的には、アプリは使われなくなると中断状態に設定されます。アプリが中断されると、システムはそれをいつ終了させるかを決定します。開発者は、アプリの現在の状態とユーザーの設定を保存するためのコードを作成します。アプリの再開時には、ユーザーが最後にアプリを使ったときの状態を復元できます。それを適切に行った場合、ユーザーはアプリが終了していたことにも気付きません。

設定データの保存と読み込みのプロセスをより簡単にするには、Windows.Data 名前空間の一部である ApplicationsData クラスを使うことができます。このクラスには、アプリのデータの共有と読み込み用の API が用意されています。データの格納には 3 つの種類があります。

LocalLocalSettings ではデータをキーと値のディクショナリ ペアとして格納でき、LocalFolder ではファイルを格納できます。データは現在のコンピューターのみに保存され、アプリが削除されると、データは削除されます。
RoamingRoamingSettings ではデータをキーと値のディクショナリ ペアとして格納でき、RoamingFolder ではファイルを格納できます。データは、現在のコンピューターに格納されます。また、同じアプリがインストールされ、設定を同期するよう構成されている他のコンピューターとも共有されます。アプリが削除されると、データは削除されます。
TemporaryTemporaryFolder にはアプリが実行中に必要とする可能性のあるファイルを何でも格納できますが、システムにはそれらのファイルをいつでも削除する権限があります。

 

C# でのアプリ データの保存と読み込み

次に示す短い C# の例では、アプリが中断されるとアプリの設定の一部 (ハイ スコア) が LocalSettings に保存され、アプリが再開されると再び読み込まれます。このコードは、App.xaml.cs に記述され、OnSuspending メソッドと OnLaunched メソッドにそれぞれ含まれていると仮定します。これらのメソッドは、プロジェクトの種類として [新しいアプリケーション (XAML)] を使うときに作成されます。

  アプリが中断から再開されたときに、設定データを再び読み込む必要はありません。アプリはメモリ内に保持され、中断されたときの状態で再開されます。ただし、アプリが中断後に終了されている場合は、状態を復元する必要があります。アプリの中断と再開について詳しくは、「アプリケーションのライフサイクル (Windows ストア アプリ)」をご覧ください。

            // Saving Application Data
            //
            // Add this to  OnSuspending() in App.xaml.cs
            // Add: using Windows.Storage;

            int HighScore = 1000;
            ApplicationData.Current.LocalSettings.Values["HighScore"] = HighScore;


            // Loading Application Data            //
            // Add this to OnLaunched() in App.xaml.cs
            if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                // App is being resumed afted being termination, so settings
                // should be restored.

                if (ApplicationData.Current.LocalSettings.Values.ContainsKey("HighScore"))
                {
                    int HighScore;
                    HighScore = (int)(ApplicationData.Current.LocalSettings.Values["HighScore"]);
                }
            }
            else
            {
                // App is being resumed after being suspended, so typically you do not
                // need to restore settings.
            }

  ApplicationData を使って直接、保存できるのは単純なデータ型のみです。より複雑なオブジェクトを保存する必要がある場合は、まずシリアル化する必要があります。その方法については、「カスタム オブジェクトのコレクションをローカル ストレージに保存する方法」と DataContractSerializer クラスをご覧ください。

関連トピック

iOS 開発者のためのトピック
iOS 開発者向けリソース
iOS 開発者のための Windows 8 のコントロール
iOS 開発者のための Windows 8 のクックブック
ライフサイクルのトピック
アプリケーションのライフサイクル (Windows ストア アプリ)
起動、再開、マルチタスク (C#/VB/C++ と XAML を使った Windows ストア アプリ)
起動、再開、マルチタスク (JavaScript と HTML を使った Windows ストア アプリ)
アプリ データのトピック
Windows ランタイムを使ったアプリ データへのアクセス (Windows ストア アプリ)
アプリケーション データのローミングのガイドライン
アプリ設定のガイドライン (Windows ストア アプリ)
Fish Based Interface とデータのシリアル化の復帰に関するブログ

 

 

表示:
© 2015 Microsoft