« Android PreferenceActivityにonSharedPreferenceChangedを使う時に注意すること | メイン | Android DefaultSharedPreferences »

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";
    . . .      

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

ブログ内の関連する記事

トラックバック

このエントリーのトラックバックURL:
http://www.taosoftware.co.jp/mt/mt-tb.cgi/168

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)