program tip

Parcelable 인터페이스의 describeContents () 목적

radiobox 2020. 11. 9. 08:00
반응형

Parcelable 인터페이스의 describeContents () 목적


중복 가능성 :
Parcelable 어디서 / 언제 describeContents ()가 사용됩니까?

Parcelable 인터페이스의 describeContents () 함수를 구현하는 목적은 무엇입니까? 대부분의 프레임 워크 코드는 구현으로 0을 반환합니다. 문서에 "Parcelable에 의해 정렬 된 특수 개체 유형 집합을 나타내는 비트 마스크"가 있습니다. 누군가이 기능에 대해 설명 할 수 있습니까? (아마도 예를 들어)


클래스에 자식 클래스가있을 수 있으므로이 경우 각 자식은 describeContent()서로 다른 값으로 반환 할 수 있으므로 어떤 특정 개체 유형에서 만들지 알 수 있습니다 Parcel. 예를 들면 다음과 같습니다- Parcelable상위 클래스 ( MyParent) 에서 메소드 구현의 예 :

//************************************************
// Parcelable methods
//************************************************
//need to be overwritten in child classes 
//MyChild_1 - return 1 and MyChild_2 - return 2
public int describeContents() {return 0;}

public void writeToParcel(Parcel out, int flags)
{
    out.writeInt(this.describeContents());
    out.writeSerializable(this);
}

public Parcelable.Creator<MyParent> CREATOR
        = new Parcelable.Creator<MyParent>()
{
    public MyParent createFromParcel(Parcel in)
    {
        int description=in.readInt();
        Serializable s=in.readSerializable();
        switch(description)
        {
            case 1:
                return (MyChild_1 )s;
            case 2:
                return (MyChild_2 )s;
            default:
                return (MyParent )s;
        }
    }

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

이 경우 Parcelable자식 클래스의 모든 메서드 를 구현할 필요는 없습니다.describeContent()

참고 URL : https://stackoverflow.com/questions/4778834/purpose-of-describecontents-of-parcelable-interface

반응형