アプリケーションの設定を保存する / Getting Started


Androidではアプリケーションの設定値などを簡単に保存/読込を行うSharedPreferencesという仕組みがあります。

SharedPreferencesはデータを任意のキーと保存したい値の組み合わせで保存します。

例えば、Twitterアプリで自動更新時間を3分として保存したい場合には、保存するデータを「3」、保存するデータのキー(読み出し時に使用)を「UPDATE_TIME」とし値を保存します。


SharedPreferencesを利用する際に使うクラス、メソッドは以下の通りです。

[table “146” not found /]

それでは続きへどうぞ。

値を保存する手順

SharedPreferencesを使って値を保存をする手順は以下の通りです

  1. getDefaultSharedPreferencesメソッドを使ってSharedPreferencesクラスのインスタンスを取得する
  2. SharedPreferencesクラスのeditメソッドを使ってEditorクラスのインスタンスを取得する
  3. EditorクラスのputIntメソッドなどでキーと値を指定して保存する
  4. Editorクラスのcommitメソッドで保存を完了する

ここで初めてSharedPreferencesを使う際に忘れがちなのが最後のcommitメソッドを呼び忘れるということです。

editorクラスのput○○メソッドを呼んだだけでは実際には保存されておらず、commitメソッドを呼び出した段階で初めて保存されます

そのため、commitメソッドを呼び忘れると、いくらput○○メソッドを呼んでも保存されておらず、後述するget○○メソッドで値を取得しようとしても値が保存されていないことがあります。注意しましょう。

サンプルコード

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putInt("UPDATE_TIME", 3);
editor.commit();

値を読み出す手順

SharedPreferencesを使って値を読み出す手順は以下の通りです

  1. getDefaultSharedPreferencesメソッドを使ってSharedPreferencesクラスのインスタンスを取得する
  2. SharedPreferencesクラスのget○○メソッドなどでキーを指定して値を読み出す

値を読み出す場合は保存する場合とは異なりシンプルです。

上記の表の通り、get○○メソッドには引数が2つあり、第2引数にはデフォルト値を指定します。デフォルト値は、キーが存在しなかった場合にその値が戻り値として返ってきます。アプリケーションを初めて起動した場合などは保存されていないので、このデフォルト値が返ってくることになります。

サンプルコード

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
int time = sharedPreferences.getInt("UPDATE_TIME", 0);

まとめ

SharedPreferencesを使うことで連想配列のようにキーとバリュー(値)で簡単に値を保存することができました。アプリケーションの設定など保存をするのに役立ちます。

保存したい値が大量の場合や、大きい場合(オブジェクトを丸ごとなど)はSQLiteやシリアライズを使うことを検討するのもよいでしょう。