1. 程式人生 > >Serializable 和 Parcelable

Serializable 和 Parcelable

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; } @Override
public 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>() { @Override
public 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