android - 从 Intent 检索时包裹崩溃

标签 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% 的 session 和 95% 的崩溃发生在那里)。意外崩溃也很少发生在三星设备上(73% 的 session 记录只有 10% 的崩溃发生在该制造商身上)。

这次崩溃占应用崩溃率的 0.15%,呈上升趋势(可能是因为 API23+ 上的数量或用户增加)。

有没有人遇到过类似的事情或者已经有解决方案了?

最佳答案

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

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

关于android - 从 Intent 检索时包裹崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244432/

相关文章:

Android 猴子测试选择一个特定的 Activity

android - 在没有上下文的情况下获取共享偏好

ios - 仅发生在 AppStore 上 - 致命异常 : NSInternalInconsistencyException Could not load NIB in bundle

javascript - Android 浏览器在文件输入保存时崩溃

java - 如何使用 Android Webview 检查链接是否离线或损坏?

android - 应用程序需要空闲多长时间才能启动应用程序待机(Android Marshmallow)

java - Android Intent 按钮 NullPointerException

android - Bluetooth Intent 的 Bluetooth startActivity 方法

java - 我需要使用操作栏上的 SearchView 小部件开始 Activity

c++ - "Event ID 26 Source Application Popup"之类的错误有何帮助