2011-02-24 30 views
3

我已经在Android Market上发布了我的第二款游戏项目,并且因为部队关闭而立即发布了多个1星级报告。我在很多手机和很多模拟器上测试了零问题。我完全不知如何继续寻找建议。Android Force Close Uncatchable Unreportable

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

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

+0

当我得到一个机会,我会通过调试运行它,看看有什么我得到。 – 2011-02-24 19:47:16

回答

1

(安卓市场“大战免费的财富”,如果你想测试上)我对失踪“发送报告”按钮,有点惊讶。你用什么API级别构建游戏?我通常会使用最低API级别构建级别,以确保除此之外不再使用任何API调用,但随后切换回最高API级别,以便使用“安装到SD”等功能。

我确定至少有一位用户为您写了一封邮件。你可以要求他们安装LogCollector并将日志邮寄给你吗?

顺便说一下,在一般情况下,我不会用Thread.setDefaultUncaughtExceptionHandler所以发送报告的选项。 (它是不祥的缺失你的情况,但通常情况下,它应该在那里。)

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

+0

如果您在活动的构造函数中执行该操作,那么它将位于UI线程中。我会建议使用至少API级别8构建您的应用程序,这样,您可以启用“安装到SD”(您真的应该这样做,您的用户会感谢你)。请记住现在切换回API级别5,以确保您没有使用5中尚不存在的API调用。 – EboMike 2011-02-24 20:12:03

0

也许力量关闭是由摊位造成的,而不是例外。用户可能不会注意到这些差异。如果用户拥有与您的应用程序同时运行的CPU Hogging服务,则会出现这种问题,这就解释了为什么您在测试中没有看到问题。

0

权限互联网听起来很像您尝试将数据从净,这是你的本地局域网速度非常快转移,但是当人们尝试这种在其GSM连接突然变慢(和费时)。

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

1

我不知道如果我理解正确的你,但据我所知的Android只能说明报告对话框,如果你使用其默认的UncaughtExceptionHandler。

试试这个:
在你UncaughtExceptionHander的构造函数,调用Thread.getDefaultUncaughtExceptionHandler并保存返回的对象在一个变量(让我们称之为的DefaultHandler)。在你的处理程序的uncaughtException()做你想做的事情,然后再打电话defaultHandler.uncaughtException()

也许你应该知道的东西:
根据我的经验,你的上下文不再在uncaughtException()上运行。所以,你不能再发送广播等了。顺便说一句,如果你真的把所有东西都包裹在try/catch中,那可能是错误报告不能按预期工作的原因? :P

好运
汤姆

+0

因此,您可以在'uncaughtException()'中启动一个新的Activity? – TomTasche 2011-02-24 22:15:04

+0

呵呵,真棒! ;) 谢谢! 回到你的问题......你确定你为每个线程设置了你自己的DefaultUncaughtExceptionHandler吗?每次启动新线程时都需要设置它。 – TomTasche 2011-02-25 08:46:44