Java
Android
android開発

DateFormatはスレッドセーフじゃない

下記のようにDateFormatのインスタンスをメンバ変数として保持して使いまわしていたところ、Fabricにクラッシュレポートが上がってきました。

class Util {

companion object {
private val sDateFormat = SimpleDateFormat("yyyy/MM/dd")

fun convert(date: Date): String {
return sDateFormat.format(date)
}
}

}

調査したところ複数スレッドから呼ばれる実装になっており、ドキュメントにもあるように毎度インスタンスを生成するように変更して対応しました。

class Util {

companion object {
fun convert(date: Date): String {
return SimpleDateFormat("yyyy/MM/dd").format(date)
}
}

}