Intent 传递对象,将数据封装到对象中的两种方法 :

Intent 传递对象,将数据封装到对象中的两种方法 :
1.实现Serializable 接口
2.实现 Parcelable 接口

第一种方式:`

public class PersonBean implements Serializable {
    /**
     * Serializable 方法 优点 就是方便  缺点 性能上消耗资源大
     */
    private static final long serialVersionUID = 1L;
    public String name;
    public String password;
    public String sex;
    public int id;
}

仅仅只需要添加一个serialVersionUID
发送方式:

public void sendSerializable()
    {
        PersonBean personBean=new PersonBean();
        personBean.name="sun";
        personBean.sex="man";
        personBean.password="123";
        personBean.id=111;
        Intent it=new      Intent(MainActivity.this,SerializableActivity.class);
        it.putExtra("Serializable", personBean);
        startActivity(it);
    }

接收方式:

PersonBean personBean = (PersonBean) getIntent().getSerializableExtra("Serializable");
String name=personBean.name;

第二种方式:

public class UserBean implements Parcelable {
    public String name;
    public String password;
    public String sex;


    public int id;
    public UserBean(Parcel source) {
        name=source.readString();
        password=source.readString();
        sex=source.readString();
        //id=source.readInt();
    }
    public UserBean()
    {

    }
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(password);
        dest.writeString(sex);

        //dest.writeInt(id);
    }
    public static Parcelable.Creator CREATOR
    = new Parcelable.Creator()
    {
        @Override
        public UserBean createFromParcel(Parcel source) {
            return new UserBean(source);

        }
        @Override
        public UserBean[] newArray(int size) {
            return new UserBean[size];
        }

    };
}
必须重写writeToParcel(),describeContents()方法,以及创建构造器。
但在writeToParcel()方法内,我们可以指定该类中的哪些字段可以传哪些字段可以不传。
发送方式:
 public void sendParcelable()
    {
        UserBean userBean=new UserBean();
        userBean.id=100;
        userBean.name="sun";
        userBean.password="123";
        userBean.sex="man";
        Intent it=new Intent(MainActivity.this,ParcelableActivity.class);
        it.putExtra("Parcelable", userBean);
        startActivity(it);
    }

接收方式:

UserBean userBean = getIntent().getParcelableExtra("Parcelable");
String name=userBean.name;

对比总结:
Parcelable方式
优点:1 性能上比Serializable 好
2 可选择的传递对象的属性
缺点 : 需要实现一些父类方法
Serializable 方式:
优点 就是方便 缺点 性能上消耗资源大,对象传递时所有字段都传递过去了,不可选择传递哪些字段

你可能感兴趣的:(笔记,Java)