一、序列化和反序列化的概念
对象序列化是将对象转换为可存储和传输的格式的过程。而对象反序列化则是将被序列化的对象重新还原为内存中的对象。
二、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/n/245015.html
微信扫一扫
支付宝扫一扫