Serializable 和 Parcelable
阿新 • • 發佈:2018-11-23
turn 標準 stat write @override color div fin create
序列化:將對象轉換為可以傳輸的二進制流的過程。
Serializable是 Java 提供的一個標準化的序列化接口。
Parcelable是 Android 提供的序列化接口。(效率更高)
比如一個Person類,想要將它序列化,Serializable只需實現接口,然後進行傳遞即可。
Parcelable方式
采用Parcelable需要實現接口,以及重寫desrcibeContents() 和writeToParcel(...)方法,添加一個名為CREATOR的常量(即描述、序列化、反序列化)。
public class Person implements Parcelable {private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Overridepublic int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { @Overridepublic Person createFromParcel(Parcel source) { Person person = new Person(); person.name = source.readString(); person.age = source.readInt(); return person; } @Override public Person[] newArray(int size) { return new Person[size]; } }; }
傳遞Person對象的方式 二者相同
Person person =new Person(); person.setName("Tom"); person.setAge(20); Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("person_data", person); startActivity(intent);
Serializable獲取對象方式
Person person = (Person) getIntent().getSerializableExtra("person_data");
Parcelable獲取對象方式
Person person = (Person) getIntent().getParcelableExtra("person_data");
Serializable 和 Parcelable