2023.12.27(수) TIL

quinones·2023년 12월 27일

Serializable VS Parcelable

Serializable

  • Serializable는 Java의 인터페이스이다.
  • 리플렉션(Reflection)을 사용하여 객체를 처리하기 때문에 성능이 약간 떨어질 수 있다.
  • 구현이 비교적 간단하며 Serializable인터페이스를 구현하기만 하면 된다.

사용법
Serializable인터페이스 추가해주기

data class Product(
    val name: String,
    val imageResId: Int,
    val description: String
): Serializable

getSerializableExtra로 값 받아주기

val selectedProduct = intent.getSerializableExtra("selectedProduct") as? Product

Parcelable

  • Parcelable는 Android SDK의 인터페이스이다.
  • 명시적인 코드를 통해 객체를 처리하기 때문에 일반적으로 더빠르며 효율적이다
  • 몇 가지 메소드를 구현해야 하며 객체의 각 필드를 명시적으로 처리해야한다. 더많은 코드가 필요하지만 성능상의 이점을 얻을 수 있다.

사용법
gradle-plugins에 id추가하기

plugins {
    id("kotlin-parcelize")
}

사용할 데이터클래스에 인터페이스 추가하기

@Parcelize
data class Product(
    val name: String,
    val imageResId: Int,
    val description: String
): Parcelable

받는 데이값을 getParcelableExtra로 받아주기

val selectedProduct = intent.getParcelableExtra("selectedProduct") as? Product

정리 | 일반적으로 간단한 데이터 전달의 경우 Serializable를 사용해도 충분하지만, 성능이 중요한 상황이라면 Parcelable를 사용하는게 좋아보인다.

profile
이우진

0개의 댓글