处理无法在Parcelable类中传递的参数

时间:2019-02-13 13:07:23

标签: java android

我正在使用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);

第二个应用程序声明了四个参数,如:

  • 字符串
  • 布尔值
  • int
  • int

并且这样做:

    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);

预期结果:

当第一个应用程序未传递这四个参数时,在第二个应用程序中,必须将四个参数设置为:

  • “”
  • -1
  • -1

这很好用。

当第一个应用程序传递参数(例如,“ test”,true,15、2)时,第二个应用程序将读取空字符串true,0和0。

我做错了什么?

0 个答案:

没有答案