微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 从Intent检索时Parcel崩溃

在我们的应用程序的分析中,我们注意到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()…}.我们检查bundle是否为null,但在此之前它崩溃了.

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

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

这次崩溃对应用程序造成约0.15%的上升趋势(可能是因为API23上的数量用户数量增加).

有人遇到类似的东西或已经有解决方案?

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐