关于三星Galaxy S5序列化的例外情况

时间:2015-06-08 07:56:43

标签: java android

在我的应用中,我将数据对象从一个Activity传递到另一个Activity。代码非常简单,在第一个 Intent intent = new Intent(getActivity(), BlablaActivity.class); intent.putExtra(Values.KEY_ITEM, item);

Activity

和接收 Intent intent = getActivity().getIntent(); item = (Item) intent.getSerializableExtra(Values.KEY_ITEM);

Advertising

public class Advertising implements Serializable { private static final long serialVersionUID = -7292860618498106953L; private Content content; private Anchor anchor; private String target; private String id; // ... } 课程也非常简单:

Anchor

似乎导致此问题的public class Anchor implements Serializable { private static final long serialVersionUID = 7360857799761417956L; public String value; public String label; // ... } 类:

android.support.v7.internal.view.menu.*

我仅针对三星Galaxy S5(sm-g900f)获得以下例外:

  

引起:java.lang.IllegalArgumentException:field de.mycompany.model.Advertising.anchor
具有类型de.mycompany.model.resultandexpose.Anchor,got   de.mycompany.model.resultandexpose.Anchor

我无法理解这一点,预期的课程实际的课程。这似乎是三星特有的另一个问题。任何人都经历过这个并且知道修复或知道原因是什么?

编辑:

  1. 是的,我正在使用Proguard。 proguard文件如下所示:

    -keepattributes ** -keep class!android.support.v7.internal.view.menu。 {*;} -dontpreverify -dontoptimize -dontshrink -dontwarn **

  2. 第二行是known bug on Samsung devices的变通方法,不应触及除Parcelable包中的类以外的任何类。

    • Anchor类的serialVersionUID在我的所有类中都是唯一的。

    • 切换到Serializable意味着对整个项目进行大规模改革。将对象作为Anchor 传递可以在所有设备上运行。

    • domain.com/users=1237,3728,5686 类只是这个错误的一个例子,它发生在基本上看起来相同或非常相似的其他几个类上。所以它不是 一个类,但似乎是一个更普遍的问题。

2 个答案:

答案 0 :(得分:1)

你应该看看Parcelable是否有意图在两个活动之间传递对象。

您可以查看解释其工作原理的default configuration,我建议您查看Android文档。

答案 1 :(得分:1)

我遇到了类似问题,我发现在galaxy s5设备上使用lolipop更新时,三星使用了错误的multidex实现。您可以在此处查看我的question来解释问题。有人回答了我的问题,但我没有检查它是否有效。也许这会对你有所帮助。