Intent로 객체를 직렬화하여 이동해야할때 Serializable을 사용하는데
같은 용도로 Parcelable도 사용된다
어떤 차이가 있을까
Serializable
우선 Serializable는 Java의 표준 라이브러리의 일부
자동으로 객체가 직렬화 가능해진다
public class MyObject implements Serializable {
private int id;
private String name;
위와 같은 방식으로
클래스에 임플리먼츠하여 사용하면 된다
장점
간단하게 사용가능
모든 자바 객체에서 사용가능
단점
상대적으로 느린 속도, 높은 메모리사용량
직렬화된 객체가 예상보다 클 수 있음
직렬화 버전 관리위해 serialVersionUID 정의해야할 때가 있음
Parcelable
위와 다르게 안드로이드에서 사용되기 위해 설계된 방식
Android의 Binder 메커니즘과 함께 사용
public class MyObject implements Parcelable {
private int id;
private String name;
protected MyObject(Parcel in) {
id = in.readInt();
name = in.readString();
}
public static final Creator<MyObject> CREATOR = new Creator<MyObject>() {
@Override
public MyObject createFromParcel(Parcel in) {
return new MyObject(in);
}
@Override
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(name);
}
@Override
public int describeContents() {
return 0;
}
}
Serializable때 처럼 클래스에 임플리먼츠를 한 후
위와 같은 작업이 필요
장점
상대적으로 좋은 성능, 더 빠르고 적은 메모리 사용량
안드로이드 시스템에 최적화
단점
구현이 복잡, 코드가 많아짐
자바 표준라이브러리가 아니기에
안드로이드에서만 사용가능
안드로이드에서만 사용한다면
Parcelable 쪽이
입력해야할것은 많지만
확실히 사용에 용이하고,
범용성으로는 Serializable를 선택 할 수 밖에 없다
는게 포인트
'Java > AndroidStudio' 카테고리의 다른 글
Android - Retrofit2 라이브러리 이용 POST API 호출 (0) | 2024.06.13 |
---|---|
Android - Retrofit2 라이브러리 설정법 converter-gson, logging-intercepter (0) | 2024.06.13 |
Android - 유튜브검색 어플/ 클릭시 유튜브이동, 무한스크롤뷰 (1) | 2024.06.12 |
Android - Intent 함수 (0) | 2024.06.11 |
Android - URL 이미지처리 Glide 사용법, 인터넷 권한 (0) | 2024.06.11 |