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";
. . .
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// Save user preferences. We need an Editor object to
// make changes. All objects are from android.context.Context
SharedPreferences 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
コメントを残す
コメントを投稿するにはログインしてください。