Computer >> 컴퓨터 >  >> 프로그램 작성 >> Android

안드로이드에서 Parcelable과 Serializable의 차이점

<시간/>

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