Android: SharedPreferences


What is SharedPreferences in Android?


SharedPreferencesは、アプリケーションデータを永続的に保存するためのクラスです.
通常、DBMSはTable構造で格納され、Shared Preferencesはキー値で格納される.
getSharedPreferences()関数は、ファイル名に関する情報をパラメータとして指定するため、この名前を使用してXmlファイルを作成します.ただし、開発者が直接ファイルのコードを読み取り、書き込む必要はなく、Shared Preferenceオブジェクトを使用してデータにアクセスできます.
Shared Preferencesオブジェクトを取得する方法は、次の3つに分けられます.
  • getPreferences(int mode)
  • getSharedPreferences(String name, int mode)
  • PreferenceManager.getDefaultSharedPreferences(Context context)
  • getPreferences(int mode)


    この関数は、個別のファイル名を指定していないため、自動的にアクティブな名前のファイルに保存されます.
    プライマリActivityでgetPreferences()関数を使用してSharedPreferencesを取得すると、プライマリActivityになります.xmlに格納されます.これはMainActivityのみのストレージスペースで、他のActivityではデータの使用は許可されていません!
    SharedPreferences sharedPreferences = context.getPreferences(Context.MODE_PRIVATE);

    getSharedPreferences(String name, int mode)


    この関数は、ファイル名の情報をparameterとして指定し、Xmlファイルを作成します.
    他のActivityとComponentsはデータを共有できます.
    軽量なデータを異なるファイルに分割して格納するために使用します.
    SharedPreferences sharedPreferences = context.getSharedPreferences(KEY, Context.MODE_PRIVATE);

    PreferenceManager.getDefaultSharedPreferences(this);


    この関数は、個別のファイル名を指定しません.だから私はアプリケーションのパッケージ名をファイル名として使います.
    ex)パッケージ名はcomです.hyunsoo.test 1の場合、ファイル名は「com.hyunso.test 1 preferences」です.
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
    オブジェクトの作成時に使用するパラメータのモード値は次のとおりです.
  • MODE_PRIVATE
    -(アプリケーション内で使用可能、外部アプリケーションへのアクセス不可)
  • MODE_WORLD_READABLE
    -外部アプリケーションの読み取りを許可
  • スレーブAPI 17
  • MODE_WORLD_WRITEABLE
    -外部アプリケーションの使用を許可
  • スレーブAPI 17
  • SharedPreference.Editor


    editorクラスのputter関数を使用してキー値としてデータを格納
  • getInt(String key, int defValue)
  • getFloat(Srting key, float defValue)
  • getLong(String key, long defValue)
  • getSTring(String key, String defValue)
  • getBoolean(String key, boolean defValue)
  • これらの関数のパラメータを見ると、「defValue」というパラメータがあります.これもkeyという好みが存在しない可能性があるのではないでしょうか.このとき我々が上に入力したdeffValueは戻ってくる(もしかすると~探していない好み~)
    SharedPreferences sharedPreferences = context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean("BoolVal", true);
    editor.commit();
    参考資料:Android Developer