Parcelize vs Serializable 차이점 한눈에 보기

2025. 4. 2. 20:22Android/Android 기초

728x90
반응형

Serializable : Java의 기본 직렬화 방식

class User(val name: String, val age: Int) : Serializable

장점:

  • 구현이 매우 쉽다. implements Serializable만 하면 끝.
  • Java 표준이라 Android 외의 환경에서도 사용 가능.

단점:

  • 리플렉션 기반 → 느리다.
  • 성능이 중요한 Android 환경에선 이게 큰 단점.
  • 어떤 필드가 직렬화되고 있는지 명시적으로 제어 불가.

Parcelable (+ @Parcelize) : Android 전용 직렬화 방식

@Parcelize
data class User(val name: String, val age: Int) : Parcelable

장점:

  • Android에 최적화된 고속 직렬화.
  • 메모리 복사 수준으로 빨라서 성능이 훨씬 좋다.
  • @Parcelize 덕분에 코드도 이제는 매우 간단해짐.
  • 필요한 경우 직렬화 대상 필드를 제어할 수 있음 (@IgnoredOnParcel 등)

단점:

  • Android 전용이다. (멀티플랫폼에서는 X)
  • 수동 구현할 경우 (CREATOR, writeToParcel) 굉장히 귀찮다.
  • 복잡한 객체(예: nested List, Map 등)의 직렬화는 제한적.

 

항목 Serializable Parcelize
방식 Java 기본 제공 Android 전용 방식
속도 느림 (리플렉션 기반) 빠름 (직접 메모리 복사)
작성 편의성 매우 쉬움 (구현만 하면 끝) @Parcelize + Parcelable 필요
커스텀 유연성 낮음 높음 (필드 단위 제어 가능)
사용 추천 테스트/POJO 전송 안드로이드 컴포넌트 간 데이터 전달 (ex. Intent)

Serializable은 편하긴 한데 느리고,

Parcelize는 빠르고 유연하지만 Android 전용이다.

 

 

 

 

 

 

728x90
반응형