Android SharedPreferences について
SharedPreferencesの動作について色々調べていたのですが、途中経過としてまとめです。
SharedPrefrencesとは
まずSharedPreferencesは、内部的にキーと値をHashMapとして保持し、最終的にXMLファイルとして出力をする。代表的な関数として以下の物がある。
- getBoolean(String key, boolean defValue)
- getFloat(String key, float defValue)
- getInt(String key, int defValue)
- getLong(String key, long defValue)
- getString(String key, String defValue)
編集する時は、SharedPreferences.Editorを使用する。
作成されるXMLファイルのファイル名はプログラムから自由に指定ができ、アプリケーションディレクトリ下の、shared_prefディレクトリに作成される
少し分かりにくい点は、モードパラメーターはファイル作成時に使用されるということである。
SharedPrefrenceファイルが作成されるのは、ApplicationContextクラスのgetSharedPreferences (String name, int mode)メソッドが最初に呼ばれた時で、modeはこの時の作成時のファイルのモードとなり、そのままlinux状のファイルパミッションとなる(666等)
読み込み時に、パラメータで指定したモードでオープンする意味ではない。
サンプルソース
Android SDKドキュメントの中に記載されているソースのコピペ
import android.app.Activity;import android.content.SharedPreferences;public class Calc extends Activity {public static final String PREFS_NAME = "MyPrefsFile";. . .@Overrideprotected void onCreate(Bundle state){super.onCreate(state);. . .// Restore preferencesSharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);boolean silent = settings.getBoolean("silentMode", false);setSilent(silent);}@Overrideprotected void onStop(){super.onStop();// Save user preferences. We need an Editor object to// make changes. All objects are from android.context.ContextSharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);SharedPreferences.Editor editor = settings.edit();editor.putBoolean("silentMode", mSilentMode);// Don't forget to commit your edits!!!editor.commit();}}
上記ソースはあくまでもサンプルという点
上記のソースコードでは、キーを押された時の音を出すか出さないかを、SharedPreferencesファイルに書きこんでいる。(ちなみにこのコードはcalculatorアプリに存在しない)
ちゃんとしたプログラムであれば、音を出す出さないは、PrefrenceActivityを使ったGUIによるプログラムとなる。
上記サンプルは、サンプルコードだから、とりあえずsilentModeを切り替えるプログラムを記載したのだろう。
その他
GUIを用いないプログラムにおいても、単純にSharedPrefrenceを使用するのであれば、ファイル名を勝手に決めてくれる、DefaultSharedPrefrenceを使用するのがお手軽である。
ブログ内の関連する記事
- Android アプリケーションの設定画面の作り方
- Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意すること
- Android SharedPreferences について
- Android DefaultSharedPreferences
コメント
コメントを投稿