이 예제는 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);
}
}