我正在使用Parcelable类来解析对象。为了正常工作,我的应用程序必须从另一个应用程序启动。
第一个应用程序将序列化的对象传递给第二个应用程序。 在我的场景中,要序列化的对象无法与第二个应用程序中的相同对象匹配(这是向后兼容的问题)。
这意味着第一个应用程序中的对象的某些参数可能会丢失。
我的第二个应用程序必须能够处理这种情况,并了解是否缺少参数,并将空值(或-1或其他值)设置为正确缺少的参数。
顺序参数为:
字符串
布尔值
int
int
全部或全部
。我不想(而且我也不能)更改要在第一个应用程序中序列化的对象。
第一个应用程序这样做:
this.mp3FilePath = in.readString();
emissioneAlert = in.readInt()>0;
kmEmissioneAlert = in.readInt();
secsRitornoPosizione = in.readInt();
out.writeString(this.mp3FilePath);
out.writeInt(emissioneAlert ? 1:0);
out.writeInt(kmEmissioneAlert);
out.writeInt(secsRitornoPosizione);
第二个应用程序声明了四个参数,如:
并且这样做:
if(in.readString() == null) {
// no more parameters
this.mp3FilePath = "";
this.emissioneAlert = null;
this.kmEmissioneAlert = -1;
this.secsRitornoPosizione = -1;
}
else {
this.mp3FilePath = in.readString();
emissioneAlert = in.readInt() > 0;
kmEmissioneAlert = in.readInt();
secsRitornoPosizione = in.readInt();
}
out.writeString(this.mp3FilePath);
out.writeInt(emissioneAlert ? 1:0);
out.writeInt(kmEmissioneAlert);
out.writeInt(secsRitornoPosizione);
预期结果:
当第一个应用程序未传递这四个参数时,在第二个应用程序中,必须将四个参数设置为:
这很好用。
当第一个应用程序传递参数(例如,“ test”,true,15、2)时,第二个应用程序将读取空字符串true,0和0。
我做错了什么?