[Kotlin] Serializable vs Parcelable

sw·2022년 1월 30일
0

1. Serializable이란?

  • Java의 마커 인터페이스
    : Serialization(직렬화)을 위해 구현해야 하는 인터페이스이다.
public interface Serializable {}

Java Serialization(직렬화)

자바 내부에서 사용하는 객체나 데이터를 외부 자바시스템에서 사용할 수 있도록 바이트 스트림 형태로 만드는 것을 의미한다.
프로그램에서 사용되는 데이터들은 연속적으로 위치해 있지 않고 내부적으로 포인터에 의해 참조되고 있기 때문에 흩어진 데이터를 한 곳에 모아 일련의 바이트 형태로 보내야한다.

Byte Stream

데이터를 Byte 단위로 주고받는 것.


-Serializable은 내부에서 Reflection을 사용해서 직렬화 처리를 하는데 처리 과정 중에 많은 추가 객체를 생성한다. 이 쓰레기들은 Garbage Collector의 타겟이 되고 Garbage Collector의 과도한 동작으로 성능 저하 및 배터리 소모가 발생한다.


2. Parcelable이란?

  • 안드로이드 SDK의 인터페이스로 Reflection을 사용하지 않게 설계되어 있다. Serializable과 달리 직렬화 처리 방법을 사용자가 명시적으로 작성하기 때문에 자동으로 처리하기 위한 Reflection이 필요없다.

  • Parcelable을 직접 구현하는 건 보일러 플레이트 코드가 생기게 된다.
    그래서 kotlin-parcelize plugin을 사용해 Parcelable 구현을 자동으로 처리한다.

plugins {
    id 'kotlin-parcelize'
}
@Parcelize
data class Person(
    val name: String,
    val age: Int
): Parcelable
profile
끄적끄적

0개의 댓글