64
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SharedPreferencesの使い方(基礎編)

Posted at

基本情報

SharedPreferencesはデバイス内にデータを保存するための仕組みです。
保存されたデータはActivityが終了しても保持されるので、基本的にはアプリの設定を保存するために用いられます。

保存できるデータは以下の5つです。

  • String型
  • boolean型
  • int型
  • long型
  • float型

インスタンスの取得方法

インスタンスの取得方法には以下の3つのメソッドがあります。

  • Context#getPreferences(int)
  • Context#getSharedPreferences(String, int)
  • PreferenceManager#getDefaultSharedPreferences(Context)

ではそれぞれの使い方について見ていきましょう

Context#getPreferences(int)

GetPreferences.java
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

引数でモードを渡します。
他にMODE_WORLD_READABLE / MODE_WORLD_WRITEABLE / MODE_MULTI_PROCESSがありますが、モードについては後述します。

Context#getSharedPreferences(String, int)

GetSharedPreferences.java
SharedPreferences prefs = getSharedPreferences("SaveData", Context.MODE_PRIVATE);

引数で保存データの名前とモードを渡します。

PreferenceManager#getDefaultSharedPreferences(Context)

GetDefaultSharedPreferences.java
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

*getDefaultSharedPreferencesで作成したSharedPreferencesのモードはデフォルトでMODE_PRIVATEです。

データの書き込み

put.java
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();

それぞれのデータ形式に対応するputメソッドの引数にKey=Vakue形式でデータを書き込み、最後にapply(保存)をします。

データの読み込み

get.java
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");

それぞれのデータ形式に対応するgetメソッドの引数に保存した際のKeyを渡し取得します。

保存したデータ

ファイルパス

/data/data/[パッケージ名]/shared_prefs/

ファイル名

getPreferences(int)で作成した場合
[Activityのクラス名].xml

getSharedPreferences("SaveData", int)で作成した場合
SaveData.xml

getDefaultSharedPreferences(Context)で作成した場合
[パッケージ名]_preferences.xml

形式

XML形式で保存されます。

[パッケージ名]_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
	<string name="string">value</string>
	<boolean name="boolean" value="false" />
	<int name="int" value="0" />
	<long name="long" value="0" />
	<float name="float" value="0.0" />
</map>

保存したデータのモードについて

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
71

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?