Android Force Close Uncatchable Unreportable

时间:2011-02-24 19:39:22

标签: android exception error-handling report

本周我在Android Market上发布了我的第二个游戏项目,由于部队关闭,我立即发布了多个一星级报告。我在许多手机和许多模拟器上测试了零问题。我完全不知道如何继续寻找建议。

我使用Thread.setDefaultUncaughtExceptionHandler拦截并报告未捕获的异常,然后正常关闭。报告强制关闭的人员没有达到任何目标,即使它是应用程序的主要任务构造函数中设置的第一件事,并且所有内容都包含在try / catches中。他们还报告强制关闭弹出窗口中没有“发送报告”选项(提供开发者控制台错误报告),因此我完全无法知道问题所在。

使用Android 2.0,android:minSdkVersion =“5”。只有权限是INTERNET。

(在Android市场上,如果你想测试,可以免费获得“免费财富”)

4 个答案:

答案 0 :(得分:1)

我对丢失的“发送报告”按钮感到有些惊讶。你用什么API级别构建游戏?我通常使用您的最低API级别构建级别,以确保您不使用任何API调用,但之后切换回最高API级别,以便您可以使用“安装到SD”等功能。

我确信至少有一位用户给你写过邮件。你能让他们安装LogCollector并把你的日志邮寄给你吗?

一般来说,我不会使用Thread.setDefaultUncaughtExceptionHandler所以可以选择发送报告。 (在你的情况下,这是不祥的,但通常,它应该在那里。)

顺便说一句,异常处理程序适用于当前线程。如果您有一个OpenGL应用程序,可能崩溃发生在GL线程中?

答案 1 :(得分:1)

我不确定我是否理解正确,但据我所知,如果你使用默认的UncaughtExceptionHandler,Android只会显示报告对话框。

试试这个:
在UncaughtExceptionHander的构造函数中,调用Thread.getDefaultUncaughtExceptionHandler并将返回的对象保存在变量中(让我们称之为defaultHandler)。在您的处理程序中uncaughtException()执行您要执行的操作,然后再调用defaultHandler.uncaughtException()

也许你应该知道的事情:
根据我的经验,您的上下文在uncaughtException()处不再起作用。所以,你不能再发送广播等了。

顺便说一下,如果你真的把所有内容都包装在try / catch中,那么这可能是错误报告无法按预期工作的原因? :P

祝你好运 汤姆

答案 2 :(得分:0)

也许力量关闭是由档位引起的,而不是例外。用户可能没有注意到差异。如果用户的CPU占用服务与您的应用程序同时运行,则会更频繁地发生此类问题,这就解释了为什么您在测试中没有看到问题。

答案 3 :(得分:0)

许可互联网听起来很像你试图从网络传输数据,这在你的本地局域网中非常快,但是当人们通过他们的GSM连接尝试这种情况时,突然变得缓慢(并且耗时)。 p>

如果你在UI线程中进行数据传输,那么这个被阻止,系统会检测到阻塞 - 但是这应该会在“没有响应”中结束 - 但后来我看到了一个用户报告在我的应用程序市场上的错误,这是一个如此缓慢的原因。