AndroidのSharedPreferencesの使い方

2021年1月23日

SharedPreferencesとは

SharedPreferencesとはAndroid端末内に簡易的にデータの保存/読取を行う仕組みです。

 

アプリのデータを初期化しない限り、Preferenceに保存したデータも消えないので、

データを簡易的にアプリ内で共有して取り扱うことができます。

具体的にどういった場面で使うかというと、アプリ内で共有するべきアプリの設定データ(音声ON/OFFなど)に使われることが多いです。

 

インスタンスの取得方法

// インスタンスの取得
SharedPreferences sp = Common.get().getSharedPreferences( "saveData", Context.MODE_PRIVATE ) ;

 

インスタンスの取得方法の引数の説明

引数で保存データ名とモード(Context.MODE_PRIVATE)を渡しています。

ファイル操作のモードは4つありますが、非推奨になっているものもありますので、

特に明確な意図がなければMODE_PRIVATEにするのが無難です。

 

モード名の一覧

モード名 効果 備考
MODE_PRIVATE 自アプリのみ読み書き可能
MODE_WORLD_READABLE 他アプリから読み取り可能 API Level17から非推奨
MODE_WORLD_WRITEABLE 他アプリから書き込み可能 API Level17から非推奨
MODE_MULTI_PROCESS 複数のプロセスで読み書き可能 API Level23から非推奨

 

データの保存

SharedPreferences.Editor editor = prefs.edit();
editor.putString("string", "value");
editor.putBoolean("boolean", false);
editor.putInt("int", 0);
editor.putLong("long", 0);
editor.putFloat("float", 0.0);
editor.apply();

 

SharedPreferences.Editor editor = prefs.edit();で、SharedPreferences.Editorオブジェクトを取得します。

取得したオブジェクトに対して、putStringやputIntなどのメソッドを使用してデータを保存していきます。

ここで一点注意して頂きたいのが、etidor.apply();しないとデータ保存が反映されないので気を付けてください。

 

データの読み込み

String str = prefs.getString("string");
boolean bool = prefs.getBoolean("boolean");
int intNum = prefs.getInt("int");
long longNum = prefs.getLong("long");
float floatNum = prefs.getFloat("float");

 

データを読み込むにはgetStringやgetIntのメソッド使用して、

引数にデータの保存時に指定した、キーを指定することでデータの読み込みができます。

 

ファイルの保存場所

保存したデータはdata/data/パッケージ名/shared_prefsの中にxmlファイルとして保存されます。