Android application development 第16章:SharedPreferences

🗂️ SharedPreferencesとは?

アプリ内で簡単なデータを永続的に保存する仕組みです。
たとえば:

  • ログイン状態(true/false)
  • ユーザー名や言語設定
  • 最後に開いた画面やスコア など

のような 「ちょっとした設定」や「小さなデータ」 を保存するのに向いています。

SQLiteやファイル保存は重すぎる。でも一時的なBundleIntentでは足りないときに便利!


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

mh

Related Posts

Android application development 第17章:SQLiteとRoomの比較と実装

🧩 SQLiteとRoomの違いは? 項目 SQLite R…

Android application development 第15章:リストのクリック処理と画面遷移

という一連の処理を学びます。 🧩 まずは全体像 🔧 Recy…

You Missed

Kubernetes Learning 第13章:kubectl apply / diff / deleteの運用

  • 投稿者 mh
  • 5月 17, 2025
  • 12 views

Android application development 第17章:SQLiteとRoomの比較と実装

  • 投稿者 mh
  • 5月 17, 2025
  • 10 views

Kubernetes Learning 第12章:リソース毎のマニフェスト作成 〜Kubernetesで何をどう定義するのか〜

  • 投稿者 mh
  • 5月 16, 2025
  • 22 views

Android application development 第16章:SharedPreferences

  • 投稿者 mh
  • 5月 16, 2025
  • 20 views

Kubernetes Learning 第11章:YAML形式の基本 ~Kubernetesマニフェストの土台を理解する~

  • 投稿者 mh
  • 5月 15, 2025
  • 25 views

Android application development 第15章:リストのクリック処理と画面遷移

  • 投稿者 mh
  • 5月 15, 2025
  • 22 views