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<UserBean> CREATOR
    = new Parcelable.Creator<UserBean>()
    {
        @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 方式:
优点 就是方便 缺点 性能上消耗资源大,对象传递时所有字段都传递过去了,不可选择传递哪些字段

转载于:https://my.oschina.net/sunqiyao/blog/664419

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值