一、序列化和反序列化的概念
對象序列化是將對象轉換為可存儲和傳輸的格式的過程。而對象反序列化則是將被序列化的對象重新還原為內存中的對象。
二、Android中序列化的實現
在Android中,對象序列化主要是為了在不同的Activity之間進行數據傳遞。而Android提供了兩種序列化的方式:Parcelable和Serializable。
三、Parcelable方式
Parcelable是一種Android獨有的序列化方式。相對於Serializable而言,Parcelable的效率更高,因為其是在內存中完成的序列化,不需要將對象寫入磁碟。Parcelable序列化的過程比較簡單,只需要在實現Parcelable介面的類中重寫兩個方法:writeToParcel()和createFromParcel()。其中writeToParcel()方法用於將對象序列化成一個Parcel對象,createFromParcel()則是將Parcel對象反序列化為一個實例對象。
四、Serializable方式
Serializable是一種Java中通用的序列化方式,在Android中也可以使用。相對於Parcelable而言,Serializable的實現方式更為簡單,只需要在需要序列化的類中實現Serializable介面。
五、代碼示例
下面是一個使用Parcelable和Serializable方式進行序列化和反序列化的例子:
import android.os.Parcel;
import android.os.Parcelable;
import java.io.Serializable;
// Parcelable方式
public class User implements Parcelable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
protected User(Parcel in) {
name = in.readString();
age = in.readInt();
}
public static final Creator CREATOR = new Creator() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
}
// Serializable方式
public class User implements Serializable {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
六、總結
在Android中,對象序列化是非常常見的操作,Parcelable和Serializable是兩種常用的序列化方式。開發者可以根據自己的需要和具體情況,選擇合適的方式對對象進行序列化和反序列化。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245015.html
微信掃一掃
支付寶掃一掃