Bundle.getSerializable() Deprecated

Jong_Han·2022년 11월 15일

Android API 33 이후 getSerializable()이 deprecated 되었습니다.

기존에는 아래와 같이 사용하였습니다.

getSerializable(key) as? T

API 33 이후로는 아래처럼 사용해야 합니다.

getSerializable(key, T::class.java)

따라서, 앞으로는 이런 방식으로 사용합니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    getSerializable(key, T::class.java)
} else {
    getSerializable(key) as? T
}

매번 이렇게 사용하기는 귀찮으니 확장함수로 정의하여 사용합니다.

@Suppress("DEPRECATION")
inline fun <reified T : Serializable> Bundle.customGetSerializable(key: String): T? {
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        getSerializable(key, T::class.java)
    } else {
        getSerializable(key) as? T
    }
}
profile
안드로이드 개.....발자?

0개의 댓글