본문 바로가기
Android

[안드로이드] Parcelable

by Sky Titan 2020. 8. 22.
728x90
 

Parcelable  |  Android 개발자  |  Android Developers

 

developer.android.com

Parcelable

  • 자바의 Serializeable을 안드로이드에서 구현한 인터페이스
  • 안드로이드는 액티비티 간 데이터 전달 시 Parcel 이라는 추상화 된 객체로 전달
  • Parcelable은 Parcel에 객체를 저장하거나 읽어올 수 있게해주는 인터페이스
직접 정의한 클래스 객체를 다른 액티비티로 전달하고 싶을 때 구현
EX) intent.putParcelableExtra() 를 이용하여 객체 전송

 

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

public class Person implements Parcelable {

    private String name;
    private int age;

    public Person()
    {
        
    }
    
    public Person(String name, int age)
    {
        this.age = age;
        this.name = name;
    }
    
    //직렬화 된 데이터를 받아서 역직렬화
    protected Person(Parcel in) {
        age = in.readInt();
        name = in.readString();
    }

    //필수 생성 (자동으로 생성됨)
    public static final Creator<Person> CREATOR = new Creator<Person>() {
        @Override
        public Person createFromParcel(Parcel in) {
            return new Person(in);
        }

        @Override
        public Person[] newArray(int size) {
            return new Person[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    //객체가 직렬화되어 보내지기 전 데이터 직렬화 과정
    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(name);
        parcel.writeInt(age);
    }
}
728x90

댓글