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を使用するのがお手軽である。

ブログ内の関連する記事


コメント

このブログの人気の投稿

島へ移住の話【炊飯】

ドローンプログラミング体験教室を伊豆大島の小学校でしてきました

情報処理安全確保支援士登録証のカード型が届きました。