我最近收到一份关于我的一款应用程序在android市场上的NullPointerException崩溃报告。我在测试时无法重新创建错误,所以我认为它可能是特定于某个设备的。为了解决这个问题,我在最新版本中加入了BugSense。BugSense已经报告了其他问题,并且非常有帮助,但我仍然在Android市场上收到最新版本的原始错误报告,但在BugSense中。BugSense在某些设备上不起作用吗?
关于崩溃的一些细节:
- BugSense在我的启动屏幕活动中被调用
- 启动屏幕打开主活动
- 主活动有一个MyObject实例
- MyObject是在用户单击ListView中的项目时设置的
- 单击ListView中的项目将打开AlertDialog
- 在onCreateDialog中调用MyObject.getName()
- 发生崩溃-NPE
错误未显示在BugSense仪表板上。Android市场中的用户评论状态为"应用程序一打开就崩溃。"我最初的想法是,用户找到了一种方法,可以在不点击列表项的情况下打开对话框,但在看到用户评论后,应用程序似乎在需要调用之前就试图访问onCreateDialog。
所以我的问题是:如果没有BugSense的报告,应用程序怎么可能崩溃?为什么在活动需要onCreateDialog之前调用它?
我使用ACRA报告崩溃,并将它们上传到Google Docs("正常"的ACRA方式)和BugSense。
即使在与BugSense交换了多封电子邮件,并试图解决这种情况后,我在谷歌文档中获得的条目数量也是我在BugSense中获得的数量的5倍。
BugSense正在悄悄地删除五分之四的报告,很可能是因为它的解析器不喜欢报告中包含的数据。它的用户界面比费力地浏览一个巨大的谷歌文档电子表格有用得多,但我不能相信BugSense,因为它的报告太少了。
如果你使用ACRA或Critterism,你会崩溃吗?