parceble是安卓中的实体类序列化要实现的接口,效率要高于seriable接口,下面看看怎么实现把;
1 实现
public class User implements Parcelable{
private String name;
private Integer age;
public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
User user = new User();
user.setName(in.readString());
user.setAge(in.readInt());
return user;
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
主要是createFromParcel和writeToParcel方法,里面的书写顺序要和上面字段的定义顺序保持一致的;
2 发送数据
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
User user = new User();
user.setName("曲洋");
user.setAge(28);
bundle.putParcelable("user", user);
intent.putExtras(bundle);
startActivity(intent);
是的,我们是利用bundle传递数据的;
3 接收数据
Bundle bundle = getIntent().getExtras();
User user = bundle.getParcelable("user");
Assert.notNull(user,"");//利用自己封装的断言判断不恩能够为空
ToastUtil.showShort(user.getName() + "=" + user.getAge(), getApplicationContext());