🗂️ 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スレッドをブロックしません)- 設定ファイルはアプリ単位で複数持てます(ファイル名で分けられる)
