【问题标题】:Android app doesn't crash, but not responding on uncaught exceptionsAndroid 应用程序不会崩溃,但不会响应未捕获的异常
【发布时间】:2015-09-17 05:33:54
【问题描述】:

我最近注意到,当发生未捕获的异常时,我的应用程序不会崩溃,但它没有响应。我使用 Google Analytics 来了解崩溃情况,我怀疑这可能是问题的原因。

当我在onCreate() 中抛出NullPointerException 时(紧跟在super.onCreate() 之后),应用会显示白屏,但不会崩溃。

Logcat 说:

06-30 14:00:59.386  26259-26259/? I/GAv4﹕ Google Analytics 7.5.71 is starting up. To enable debug logging on a device run:
    adb shell setprop log.tag.GAv4 DEBUG
    adb logcat -s GAv4
06-30 14:00:59.398  26259-26259/? W/GAv4﹕ AnalyticsReceiver is not registered or is disabled. Register the receiver for reliable dispatching on non-Google Play devices. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.409  26259-26259/? W/GAv4﹕ CampaignTrackingReceiver is not registered, not exported or is disabled. Installation campaign tracking is not possible. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.414  26259-26295/? W/GAv4﹕ AnalyticsService not registered in the app manifest. Hits might not be delivered reliably. See http://goo.gl/8Rd3yj for instructions.
06-30 14:00:59.467  26259-26259/? D/AndroidRuntime﹕ Shutting down VM

我想查看未捕获的异常,因为如果我看不到堆栈跟踪和问题原因,就很难修复它们。

我该怎么做才能恢复以前的行为?

编辑:删除分析错误报告(不调用tracker.enableExceptionReporting(true);)后,我再次遇到崩溃。我使用 Play Services 7.5.0 中的分析。

【问题讨论】:

  • 实际上你只有警告......这并不一定意味着你的应用程序会启动任何异常......你在寻找哪些错误?
  • 我在主活动的onCreate() 中抛出了一个 NullPointerException,我想获取它的堆栈跟踪。我的问题是我在 logcat 中没有收到任何错误。
  • 啊。我不是唯一一个收到AndroidRuntime﹕ Shutting down VM 消息并且没有看到任何其他日志的人,这让我松了一口气。
  • @YeLinAung:你也在使用 Google Analytics(分析)吗?
  • @hunyadym 是的。我正在使用 Play Services 附带的 GA。

标签: java android google-analytics uncaughtexceptionhandler


【解决方案1】:

谷歌分析是罪魁祸首。尝试在开发时禁用它(或禁用未捕获异常的自动报告),并在使用发布密钥签署应用程序时启用它。

【讨论】:

  • 对我来说,应用程序没有崩溃,既没有使用调试签名也没有使用发布密钥。 (正如我在问题中指出的那样,我最终禁用了 Analytics 异常报告。)
【解决方案2】:

Exceptions 默认显示在控制台中。

如果您不想检查控制台(我认为这更方便,因为Logcat 有时会很混乱),然后在捕获时在Log 中显示Exceptions。

try {

} catch (Exception e) {
    Log.e("YOUR_APP_TAG", "Exception occured: ", e);
}

【讨论】:

  • 在哪里可以访问此控制台? (我正在使用 Android Studio。)此外,在 Play 商店中,我没有收到任何崩溃报告,只有 ANR 报告,其中不包含堆栈跟踪。我也不想用 try-catch 包装我的所有代码。
  • AFAIK 除了手动重定向异常之外,您别无选择... 您仍然可以查看控制台 eh!!! 但您没有需要使用数百万个try-catches,如果您控制所有可能出现的Exception 到一般Exception 捕手/处理程序...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-12
  • 2019-07-13
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2015-03-31
相关资源
最近更新 更多