一、序列化和反序列化的概念
對象序列化是將對象轉換為可存儲和傳輸的格式的過程。而對象反序列化則是將被序列化的對象重新還原為內存中的對象。
二、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