Android序列化实现接口Serializable与Parcelable详解

  class Person() : Parcelable {

  var name = ""

  var age = 0

  constructor(parcel: Parcel) : this() {

  //读出

  name = parcel.readString() ?: ""

  age = parcel.readInt()

  }

  //写入

  override fun writeToParcel(parcel: Parcel, flags: Int) {

  parcel.writeString(name)

  parcel.writeInt(age)

  }

  //返回0就行

  override fun describeContents(): Int {

  return 0

  }

  //伴生对象实现接口

  companion object CREATOR : Parcelable.Creator {

  //返回对象

  override fun createFromParcel(parcel: Parcel): Person {

  return Person(parcel)

  }

  //返回一个数组,形参 size 作为数组大小

  override fun newArray(size: Int): Array {

  return arrayOfNulls(size)

  }

  }

  }

  //传递方式和 Serializable 一样,使用如下:

  TwoActivity {

  val person = intent.getParcelableExtra("person")

  }