非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Android開発】ローカルストレージ(SharedPreferences)の使い方メモ

   

Androidアプリケーション開発において、ユーザーの設定や少量のデータを永続的に保存することは不可欠です。SharedPreferencesの主な目的は、少量のデータを効率的に保存し且つアプリが終了したり再起動したりした後も維持されるものです。複雑な構造化データや大量のデータを扱うのには適しませんが、アプリの動作を制御するためのシンプルな設定値を管理する上で効率的な仕組みです。

SharedPreferencesで使うimport文
import android.content.Context;
import android.content.SharedPreferences;
import java.util.Map;
import java.util.HashMap;
 

 

SharedPreferencesへの保存
// 現在の日時をフォーマットしてユニークなキーを生成
// 例: '2025-11-29 09:35:12' のような文字列
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmm", Locale.JAPAN);
String uniqueKey = sdf.format(new Date());

String text= "保存するテキスト";

//  SharedPreferences の取得(アプリ専用の保存領域)
SharedPreferences prefs = getSharedPreferences("MyAppData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

// 日時ベースのユニークキーを使って文字列を保存
editor.putString(uniqueKey, text);
editor.apply(); // 非同期で保存を実行
 

 

SharedPreferencesに保存されているすべてのデータの取得
/**
* * @return 保存されているキーと値のペアのマップ。
* キーは保存時のタイムスタンプ
*/
private Map<String, String> loadAllData() {
  // 1. 保存時と同じ名前 ("MyAppData") でSharedPreferencesオブジェクトを取得
  SharedPreferences prefs = getSharedPreferences("MyAppData", Context.MODE_PRIVATE);

  // 2. すべてのキーと値のペアを取得
  // getAll()は <String, ?> のMapを返すため、型安全のためにキャスト。
  Map<String, ?> allEntries = prefs.getAll();

  // 3. 取得したMapを <String, String> に絞り込み、新しいMapを作成
  Map<String, String> dataMap = new HashMap<>();
  for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
    // SharedPreferencesに保存したのはString型なので、Stringとして処理
    if (entry.getValue() instanceof String) {
      dataMap.put(entry.getKey(), (String) entry.getValue());
    }
  }

  return dataMap;
}
 

 

SharedPreferencesに保存されているデータの全消去
private void clearAllData() {
  // 保存時と同じ名前 ("MyAppData") でSharedPreferencesオブジェクトを取得
  SharedPreferences prefs = getSharedPreferences("MyAppData", Context.MODE_PRIVATE);
  // Editorを取得
  SharedPreferences.Editor editor = prefs.edit();
  // すべてのデータをクリア
  editor.clear();
  // 非同期で削除を実行
  editor.apply();
}
 

 

スポンサーリンク

 - Androidプログラミング