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