在我们的应用分析中,我们注意到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 +上的数量或用户数量增加)。
任何人遇到类似的事情或已经有解决方案吗?
答案 0 :(得分:0)
延迟更新,但总比没有好。崩溃消失了。我使用的解决方案可以在这里找到:How to marshall and unmarshall a Parcelable to a byte array with help of Parcel?
说实话,我已经从我们的应用程序中删除了一些不必要的parcelling和unparcelling,这可能也有帮助,但我认为前一个解决方案是相关的。