이 예제는 Android에서 Parcelable과 Serializable의 차이점을 보여줍니다.
직렬화 가능
Serializable은 표시 가능한 인터페이스이거나 빈 인터페이스로 호출할 수 있습니다. 미리 구현된 메서드가 없습니다. Serializable은 객체를 바이트 스트림으로 변환합니다. 따라서 사용자는 한 활동 간에 데이터를 다른 활동으로 전달할 수 있습니다. 직렬화 가능의 주요 장점은 데이터 생성 및 전달이 매우 쉽지만 소포 가능에 비해 프로세스가 느립니다.
아래와 같이 직렬화 가능한 간단한 예 –
import java.io.Serializable; class serializableObject implements Serializable { String name; public serializableObject(String name) { this.name = name; } public String getName() { return name; } }
소포 가능
Parcelable은 직렬화 가능보다 빠릅니다. Parcelable은 객체를 바이트 스트림으로 변환하고 두 활동 간에 데이터를 전달합니다. 소포 가능 코드를 작성하는 것은 직렬화에 비해 약간 복잡합니다. 두 활동 간에 데이터를 전달하는 동안 더 이상 임시 개체를 생성하지 않습니다.
아래와 같이 Parcel 수 있는 간단한 예 –
import android.os.Parcel; import android.os.Parcelable; class parcleObject implements Parcelable { private String name; protected parcleObject(Parcel in) { this.name = in.readString(); } public parcleObject(String name){ this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static final Creator<parcleObject> CREATOR = new Creator<parcleObject>() { @Override public parcleObject createFromParcel(Parcel in) { return new parcleObject(in); } @Override public parcleObject[] newArray(int size) { return new parcleObject[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.name); } }