🗂️ SharedPreferencesとは?
アプリ内で簡単なデータを永続的に保存する仕組みです。
たとえば:
- ログイン状態(true/false)
- ユーザー名や言語設定
- 最後に開いた画面やスコア など
のような 「ちょっとした設定」や「小さなデータ」 を保存するのに向いています。
SQLiteやファイル保存は重すぎる。でも一時的な
Bundle
やIntent
では足りないときに便利!
🧠 Javaの Map
と似た使い心地
SharedPreferences
は「キーと値のペア」でデータを保存・取得します。
Javaでいうと Map<String, Object>
のようなイメージです。
🛠️ 実装方法(保存と読み取り)
■ データを保存(書き込み)
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", "taro");
editor.putInt("score", 80);
editor.putBoolean("isLoggedIn", true);
// 必ず commit() または apply() を呼ぶ!
editor.apply(); // 非同期(推奨)
■ データを読み取り
SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE);
String username = prefs.getString("username", "guest");
int score = prefs.getInt("score", 0);
boolean isLoggedIn = prefs.getBoolean("isLoggedIn", false);
第二引数は「デフォルト値」。キーが存在しないときに使われます。
📦 保存される場所
- 保存された値は、アプリが削除されるまで残り続きます。
- データは内部ストレージにXML形式で保存されます(セキュリティ的にはやや注意)。
📍 MODE_PRIVATEって何?
MODE_PRIVATE
は他のアプリからアクセスできない「このアプリ専用」保存領域という意味です。
🔁 よく使うシーンの例
シーン | 使い方 |
---|---|
最初のログインチェック | isFirstLaunch = prefs.getBoolean("first", true) |
ユーザー名を記憶 | putString("username", "...") |
設定画面でトグル状態を保存 | putBoolean("darkMode", true) |
最終ログイン日時などの記録 | putLong("lastLogin", System.currentTimeMillis()) |
✅ まとめ
特徴 | 内容 |
---|---|
保存形式 | キーと値のペア(文字列・数値・ブールなど) |
永続性 | アプリ終了後も残る(アプリ削除で消える) |
保存方法 | Editor を使って apply() か commit() |
用途 | 設定値・状態の保存など、軽量な用途に最適 |
🧪 補足知識
apply()
は非同期、commit()
は同期的に書き込みます(apply()
の方がUIスレッドをブロックしません)- 設定ファイルはアプリ単位で複数持てます(ファイル名で分けられる)