为什么 Parcel.writeBoolean(boolean) 不存在?
Why Parcel.writeBoolean(boolean) doesn't exist?
当我需要将 boolean
写入 Parcel
时,我会这样做:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(myBoolean ? 1 : 0);
}
但是,方法writeBoolean
不存在有什么原因吗?
您可以使用掩码和移位将您的布尔值打包成一个字节。那将是最有效的方式,并且可能是他们希望您做的。
检查此 link https://developer.android.com/reference/android/os/Parcel.html
的基元部分
打包你的布尔值..你可以使用http://www.parcelabler.com/
例如:
class BooleanSample {
Boolean flag;
}
结果:
class BooleanSample implements Parcelable {
Boolean flag;
protected BooleanSample(Parcel in) {
byte flagVal = in.readByte();
flag = flagVal == 0x02 ? null : flagVal != 0x00;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (flag == null) {
dest.writeByte((byte) (0x02));
} else {
dest.writeByte((byte) (flag ? 0x01 : 0x00));
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<BooleanSample> CREATOR = new Parcelable.Creator<BooleanSample>() {
@Override
public BooleanSample createFromParcel(Parcel in) {
return new BooleanSample(in);
}
@Override
public BooleanSample[] newArray(int size) {
return new BooleanSample[size];
}
};
}
当我需要将 boolean
写入 Parcel
时,我会这样做:
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(myBoolean ? 1 : 0);
}
但是,方法writeBoolean
不存在有什么原因吗?
您可以使用掩码和移位将您的布尔值打包成一个字节。那将是最有效的方式,并且可能是他们希望您做的。
检查此 link https://developer.android.com/reference/android/os/Parcel.html
的基元部分打包你的布尔值..你可以使用http://www.parcelabler.com/
例如:
class BooleanSample {
Boolean flag;
}
结果:
class BooleanSample implements Parcelable {
Boolean flag;
protected BooleanSample(Parcel in) {
byte flagVal = in.readByte();
flag = flagVal == 0x02 ? null : flagVal != 0x00;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
if (flag == null) {
dest.writeByte((byte) (0x02));
} else {
dest.writeByte((byte) (flag ? 0x01 : 0x00));
}
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<BooleanSample> CREATOR = new Parcelable.Creator<BooleanSample>() {
@Override
public BooleanSample createFromParcel(Parcel in) {
return new BooleanSample(in);
}
@Override
public BooleanSample[] newArray(int size) {
return new BooleanSample[size];
}
};
}