Parcelable序列化对象

 

1.创建Parcelable对象

/*************************
 *@author 徐宏明    E-Mail:android_xhm.126.com
 *                                        QQ:294985925
 *@version 创建时间            :2013-7-8 上午11:49:42
 *
 *@see
 *************************/
package com.xhm.unit;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Parcelable实现其可实现对象的序列化,并且能放入数组对象,比Serializable更高效。
 * 
 * @author Administrator
 * 
 */
public class AddInfo implements Parcelable {
    private String mName, mNickname, mQq, mPhone, mEmail, mAddress;// 姓名,昵称,QQ,电话,邮箱,地址

    public AddInfo(String name, String nickname, String qq, String phone,
            String email, String address) {
        // TODO Auto-generated constructor stub
        this.mName = name;
        this.mNickname = nickname;
        this.mQq = qq;
        this.mPhone = phone;
        this.mEmail = email;
        this.mAddress = address;
    }

    /**
     * 这个方法不晓得做什么的,返回0就可以。
     */
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    /**
     * 构造方法,用于读取对象信息,注意读写顺序要和写入顺序一致!
     * 
     * @param in
     *            读入对象
     */
    private AddInfo(Parcel in) {
        mName = in.readString();
        mNickname = in.readString();
        mQq = in.readString();
        mPhone = in.readString();
        mEmail = in.readString();
        mAddress = in.readString();
    }

    /**
     * 将数据写入Parcel对象,写入的顺序和读取的顺序必须一致
     */
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        dest.writeString(mName);
        dest.writeString(mNickname);
        dest.writeString(mQq);
        dest.writeString(mPhone);
        dest.writeString(mEmail);
        dest.writeString(mAddress);
    }

    /**
     * 固定方法,必须是static final 方法名必须大写
     */
    public static final Parcelable.Creator<AddInfo> CREATOR = new Parcelable.Creator<AddInfo>() {
        // 获得一个对象
        public AddInfo createFromParcel(Parcel in) {
            return new AddInfo(in);
        }

        // 获得多个对象
        public AddInfo[] newArray(int size) {
            return new AddInfo[size];
        }
    };

    public String getmName() {
        return mName;
    }

    public void setmName(String mName) {
        this.mName = mName;
    }

    public String getmNickname() {
        return mNickname;
    }

    public void setmNickname(String mNickname) {
        this.mNickname = mNickname;
    }

    public String getmQq() {
        return mQq;
    }

    public void setmQq(String mQq) {
        this.mQq = mQq;
    }

    public String getmPhone() {
        return mPhone;
    }

    public void setmPhone(String mPhone) {
        this.mPhone = mPhone;
    }

    public String getmEmail() {
        return mEmail;
    }

    public void setmEmail(String mEmail) {
        this.mEmail = mEmail;
    }

    public String getmAddress() {
        return mAddress;
    }

    public void setmAddress(String mAddress) {
        this.mAddress = mAddress;
    }
}
 

2.使用Parcelable对象

            // 初始化intent
            mBase_intent = new Intent(this, MySelf_Bitmap_Activity.class);
            // 初始化Parcelable对象
            AddInfo info = new AddInfo(mView_myself_pop_edit[0].getText()
                    .toString(), mView_myself_pop_edit[1].getText().toString(),
                    mView_myself_pop_edit[2].getText().toString(),
                    mView_myself_pop_edit[3].getText().toString(),
                    mView_myself_pop_edit[4].getText().toString(),
                    mView_myself_pop_edit[5].getText().toString());
            // 添加Parcelable对象
            mBase_intent.putExtra("myself_activity", info);
            // 跳转
            startActivity(mBase_intent);

3.提取Parcelable对象中的信息

        // 获得用户信息
        mInfo = getIntent().getParcelableExtra("myself_activity_info");

4.Parcelable和Serializable性能对比:

原文地址:https://www.cnblogs.com/qinghuaideren/p/3178124.html