从Intent检索时,包裹崩溃

时间:2016-12-20 14:17:59

标签: android android-intent crash android-6.0-marshmallow parcelable

在我们的应用分析中,我们注意到getIntent().getExtras()来电的崩溃次数增加了。这是间歇性的,我们无法复制它。

崩溃有两种形式:

12  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.os.Parcel.dataSize()' on a null object reference
13  at android.os.BaseBundle.<init>(BaseBundle.java:126)
14  at android.os.Bundle.<init>(Bundle.java:102)
15  at android.content.Intent.getExtras(Intent.java:5685)

12  Caused by: java.lang.IllegalArgumentException
13  at android.os.Parcel.nativeAppendFrom(Native Method)
14  at android.os.Parcel.appendFrom(Parcel.java:458)
15  at android.os.BaseBundle.<init>(BaseBundle.java:126)
16  at android.os.Bundle.<init>(Bundle.java:102)
17  at android.content.Intent.getExtras(Intent.java:5685)

检索代码基本上如下onResume() {... getIntent().getExtras() ...}。我们检查捆绑包是否为空,但在此之前崩溃。

我们确实传递了一个自定义的parcelable,但广泛的单元测试正在通过编组和解组。

这些崩溃的有趣统计数据是,它主要发生在Android 6+上(72%的会话记录中95%的崩溃发生在那里)。此外,三星设备上很少发生意外崩溃(73%的会话记录只有10%的崩溃发生在该制造商处)。

此次崩溃导致约0.15%的应用程序崩溃并出现上升趋势(可能是因为API23 +上的数量或用户数量增加)。

任何人遇到类似的事情或已经有解决方案吗?

1 个答案:

答案 0 :(得分:0)

延迟更新,但总比没有好。崩溃消失了。我使用的解决方案可以在这里找到:How to marshall and unmarshall a Parcelable to a byte array with help of Parcel?

说实话,我已经从我们的应用程序中删除了一些不必要的parcelling和unparcelling,这可能也有帮助,但我认为前一个解决方案是相关的。