Android 中的 parcelable 如何知道在其构造函数中读取哪个变量?
How do parcelable in Android know which variable to read in its constructor?
从下面的代码可以看出,parcel 没有读取到 return 值的任何键。他们如何知道要读取什么并将其放入变量 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();
}
是的,更改顺序肯定会导致问题。值是按顺序写入的,因此无论您在 writeToParcel()
中写入字段的顺序如何,您 都必须 在从 Parcel
中读取时以相同的顺序读回它们.
从下面的代码可以看出,parcel 没有读取到 return 值的任何键。他们如何知道要读取什么并将其放入变量 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();
}
是的,更改顺序肯定会导致问题。值是按顺序写入的,因此无论您在 writeToParcel()
中写入字段的顺序如何,您 都必须 在从 Parcel
中读取时以相同的顺序读回它们.