Serializable / Parcelable

객체를 직렬화하는 인터페이스

Serializable / Parcelable

Serializable


SerializableJava 표준 인터페이스로, 객체를 바이트(Byte) 스트림으로 변환하거나, 바이트 스트림을 다시 객체로 변환하는 작업을 수행한다.

특별한 메소드 구현 없이 직렬화 및 역직렬화가 되지만, 자바 Reflection 을 사용하기 때문에 오버헤드가 발생할 수 있다.

import java.io.Serializable;

public class MySerializableObject implements Serializable {
    /* ... */
}



Parcelable


Parcelable 은 안드로이드에서 제공하는 인터페이스로, 객체를 바이트(Byte) 스트림으로 변환하거나, 바이트 스트림을 다시 객체로 변환하는 작업을 수행한다.

안드로이드 시스템 간에 데이터 전달에 최적화되어 있지만, 직렬화 및 역직렬화 과정을 명시적으로 작성해야 하기 때문에 클래스의 구조 변경이 복잡할 수 있다.

import android.os.Parcel;
import android.os.Parcelable;

public class MyParcelableObject implements Parcelable {
    
    public static final Parcelable.Creator<MyParcelableObject> CREATOR
            = new Parcelable.Creator<MyParcelableObject>() {
        public MyParcelableObject createFromParcel(Parcel in) {
            return new MyParcelableObject(in);
        }

        public MyParcelableObject[] newArray(int size) {
            return new MyParcelableObject[size];
        }
    };

    private MyParcelableObject(Parcel in) {
        // Parcel 에서 데이터를 읽는 생성자
    }

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags) {
        // 객체의 데이터를 Parcel 에 쓰는 코드
    }

    /* ... */
}
essential