Android中Parcelable序列化总结
在使用Parcelable对android中数据的序列化操作还是比较有用的,有人做过通过对比Serializable和Parcelable在android中序列化操作对象的速度比对,大概Parcelable相比Serializable要快10倍左右、、、给一个连接可以瞅瞅他们序列化的区别http://greenrobot.me/devpost/android-parcelable-serializable/
下面来总结一下我们基本数据类型、对象、数组、list等做Parcelable的方法,主要是做个总结直接看下code
package com.suning.mobile.paysdk.pay;
import java.util.ArrayList;
import android.os.Parcel;
import android.os.Parcelable;
import com.yaya.test.OrderInfoBean;
/**
*
* 〈一句话功能简述〉<br>
* 〈功能详细描述〉 数据类型序列化
*/
public class ParcelableType implements Parcelable {
/** int 类型 */
int age;
/** String 类型 */
String name;
/** boolean 注意该boolean的get和set方法 **/
boolean isGood;
/** boolean 类型 **/
boolean complete;
/** 数组 **/
private String[] ids;
/** 对象 [内部已经序列化] **/
private OrderInfoBean bean;
/** list **/
private ArrayList<OrderInfoBean> listBeans;
/**
* 默认构造方法
*/
public ParcelableType() {
// TODO Auto-generated constructor stub
}
public ParcelableType(Parcel in) {
readFromParcel(in);
}
/***
* 默认实现
*/
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
/** int 写入 **/
dest.writeInt(age);
/** string 写入 **/
dest.writeString(name);
/** boolean 写入 **/
dest.writeInt(isGood ? 1 : 0);
/** boolean 写入 **/
dest.writeInt(complete ? 1 : 0);
/** 数组 写入 **/
if (ids != null) {
dest.writeInt(ids.length);
} else {
dest.writeInt(0);
}
dest.writeStringArray(ids);
/** 对象 写入 **/
dest.writeParcelable(bean, flags);
/** list 写入 **/
dest.writeList(listBeans);
}
@SuppressWarnings("unchecked")
private void readFromParcel(Parcel in) {
/** int 读出 */
age = in.readInt();
/** stirng 读出 */
name = in.readString();
/** boolean 读出 */
isGood = (in.readInt() == 1) ? true : false;
/** boolean 读出 */
complete = (in.readInt() == 1) ? true : false;
/** 数组 读出 */
int length = in.readInt();
ids = new String[length];
in.readStringArray(ids);
/** 对象 读出 */
bean = in.readParcelable(OrderInfoBean.class.getClassLoader());
/** list 读出 */
listBeans = in.readArrayList(OrderInfoBean.class.getClassLoader());
}
public static final Parcelable.Creator<ParcelableType> CREATOR = new Parcelable.Creator<ParcelableType>() {
public ParcelableType createFromParcel(Parcel in) {
return new ParcelableType(in);
}
public ParcelableType[] newArray(int size) {
return new ParcelableType[size];
}
};
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
*
* 功能描述: <br>
* 〈功能详细描述〉 fastJson解析时需要格式
*/
public boolean isIsGood() {
return isGood;
}
public void setIsGood(boolean isGood) {
this.isGood = isGood;
}
public boolean isComplete() {
return complete;
}
public void setComplete(boolean complete) {
this.complete = complete;
}
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
public OrderInfoBean getBean() {
return bean;
}
public void setBean(OrderInfoBean bean) {
this.bean = bean;
}
public ArrayList<OrderInfoBean> getListBeans() {
return listBeans;
}
public void setListBeans(ArrayList<OrderInfoBean> listBeans) {
this.listBeans = listBeans;
}
}