fad*_*a21 5 crash android parcelable android-intent android-6.0-marshmallow
在我们的应用程序分析中,我们注意到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)
Run Code Online (Sandbox Code Playgroud)
和
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)
Run Code Online (Sandbox Code Playgroud)
检索代码基本上如下onResume() {... getIntent().getExtras() ...}。我们检查包是否不为空,但它在此之前崩溃了。
我们确实通过了自定义的可打包,但正在通过对其进行编组和解组的广泛单元测试。
这些崩溃的有趣统计数据是,它主要发生在 Android 6+ 上(记录的 72% 的会话中,95% 的崩溃发生在 Android 6+ 上)。此外,三星设备上很少发生意外崩溃(该制造商记录的 73% 的会话中只有 10% 发生崩溃)。
此崩溃对应用程序崩溃率造成约 0.15% 的影响,并且呈上升趋势(可能是因为 API23+ 上的数量或用户不断增加)。
有人遇到过类似的事情或者已经有解决方案了吗?
更新晚了,但总比不更新好。崩溃消失了。我使用的解决方案可以在这里找到:How to marshall and unmarshall a Parcelable to a byte array with help of Parcel?
老实说,我从我们的应用程序中删除了一些不必要的打包和解包,这可能也有帮助,但我认为前一种解决方案是相关的。
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |