您可以从下面的代码中看到,parcel不会读取任何键来返回值。他们如何知道阅读内容并将其放入变量someString1
或someString2
等等?
public SomeObject(Parcel in) {
this.someString1 = in.readString();
this.someString2 = in.readString();
this.someInt = in.readInt();
this.someString3 = in.readString();
this.someInt2 = in.readInt();
}
如果我这样说的话怎么办?下面的代码会变成错误,因为我改变顺序来读它吗?
public SomeObject(Parcel in) {
this.someString3 = in.readString();
this.someInt2 = in.readInt();
this.someString1 = in.readString();
this.someString2 = in.readString();
this.someInt = in.readInt();
}
答案 0 :(得分:2)
是的,更改订单肯定会导致问题。值是按顺序写入的,因此无论您在writeToParcel()
中编写字段的顺序如何,当您从Parcel
读取时,必须以相同的顺序读回它们。