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 第33章:実践ミニアプリ:天気情報アプリ

Android application development 第32章:実践ミニアプリ:シンプルなToDoリスト

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 35 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 56 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 57 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 75 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 64 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 78 views