共有環境設定(SharedPreferences)を利用したデータの保存方法を説明しています。この設定方法はアプリ内のみで管理する場合に利用します。
※Key-Valueでのデータ管理となるため、複雑な制御や大量のデータ管理には向いていません。
レイアウト
以下のような画面を作成します。
処理概要
必要な処理を順番に説明していきます。
// 共有環境設定インスタンスの作成 val sharedPreference: SharedPreferences = getSharedPreferences("sharedPreference", MODE_PRIVATE) val editor: SharedPreferences.Editor = sharedPreference.edit()
共有環境設定の読み書きをするための準備です。実際には以下のようなxmlファイルに保存されているため、xmlファイルを読み込むような動作となっています。
//共有環境設定へ値をセット editor.putString("key", "test1") //editor.commit() editor.apply()
putStringで値をセットして、commit,applyでデータを書き込みます。
※putStringは文字列を設定するための関数です。型ごとにputメソッドが用意されていますので、適宜使い分けていきましょう。
putStringの引数は以下のようになっていて、これが先ほどのxmlファイルへ書き込まれます。
- 第一引数:キー値
- 第二引数:設定する値
commitとapplyには以下のような違いがあります。即時で書き込みが必要である場合はcommit、そうでなければapplyを利用すると良いでしょう。
- commit
→同期 - apply
→非同期
//共有環境設定から値を読み込む val str: String? = sharedPreference.getString("key", "No Data")
getStringで値を取得します。
※getStringは文字列を取得するための関数です。型ごとにgetメソッドが用意されていますので、適宜使い分けていきましょう。
- 第一引数:キー値
- 第二引数:デフォルト値
となっていて、値が存在しない場合はデフォルト値が取得されます。
実装方法
上で説明した内容を踏まえて、以下のような処理を実装していきます。
- 各ボタンを押したとき
→共有環境設定に値を書き込み、テキストに設定します。 - アプリを起動したとき
→共有環境設定から値を読み込み、テキストに設定します。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 共有環境設定インスタンスの作成 val sharedPreference: SharedPreferences = getSharedPreferences("sharedPreference", MODE_PRIVATE) val editor: SharedPreferences.Editor = sharedPreference.edit() //コンポーネントの取得 val textView: TextView = findViewById(R.id.TextView) val button: Button = findViewById(R.id.button) val button2: Button = findViewById(R.id.button2) //共有環境設定から値を読み込む val str: String? = sharedPreference.getString("key", "No Data") textView.text = str //1つ目のボタンを押したとき、共有環境設定への書き込みと表示更新を行う button.setOnClickListener{ textView.text = "test1" editor.putString("key", "test1") //editor.commit() editor.apply() } //2つ目のボタンを押したとき、共有環境設定への書き込みと表示更新を行う button2.setOnClickListener{ textView.text = "test2" editor.putString("key", "test2") //editor.commit() editor.apply() } }
実行結果
アプリの動作はこのようになりました。
- 初期起動時
→”No Data”と表示される(デフォルト値) - 1つ目のボタンを押したとき
→”test1″と表示される - 2つ目のボタンを押したとき
→”test2″と表示される - アプリ終了後にもう一度起動したとき
→”test2″と表示される(共有環境設定に”test2″と保存されているため) - 端末を再起動後にアプリを起動したとき
→”test2″と表示される(共有環境設定に”test2″と保存されているため)
xmlファイルとして保存されているため、アプリを終了しても値は保持されます。
そのため、初期化が必要な場合は明示的に記述する必要があります。
まとめ
共有環境設定(SharedPreferences)を利用したデータの保存方法を説明しました。
- 共有環境設定(SharedPreferences)を利用すると、アプリ内でのデータ管理が可能となります。
ただし、Key-Valueでのデータ管理となるため、複雑な制御や大量のデータ管理には向いていません。 - xmlファイルに保存されるため、アプリを終了しても値は保持されます。
ただし、初期化が必要な場合は明示的に記述する必要があります。