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,这可能也有帮助,但我认为前一个解决方案是相关的.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...