Android
AndroidSDK
android開発
Androidアプリ

SharedPreferencesの反映はapplyを使おう

SharedPreferencesへの書き込みの反映には下記2点のメソッドが用意されています。

業務で以下のようなコードでcommitの方が使われており、PlayConsoleにANRのレポートが上がってきました。

commitはドキュメントにもあるように同期的にファイルへ書き出しを行っているため、書き出しに時間がかかりレポートされたと考えられます。

fun save(context: Context, value: Int) {

val pref = context.getSharedPreferences("PREF", Context.MODE_PRIVATE)
val editor = pref.edit()
editor.putInt("KEY", value)
editor.commit()
}

そこで、非同期で書き込みを行うapplyに置き換え対応しました。

fun save(context: Context, value: Int) {

val pref = context.getSharedPreferences("PREF", Context.MODE_PRIVATE)
val editor = pref.edit()
editor.putInt("KEY", value)
editor.apply()
}