【问题标题】:Android / google ANR crash without a specific cause没有特定原因的 Android / google ANR 崩溃
【发布时间】:2018-10-01 09:41:54
【问题描述】:

我有以下来自 android 的崩溃报告:

> java.lang.RuntimeException:    at
> android.app.ActivityThread.performLaunchActivity
> (ActivityThread.java:2822)   at
> android.app.ActivityThread.handleLaunchActivity
> (ActivityThread.java:2897)   at android.app.ActivityThread.-wrap11
> (Unknown Source)   at android.app.ActivityThread$H.handleMessage
> (ActivityThread.java:1598)   at android.os.Handler.dispatchMessage
> (Handler.java:105)   at android.os.Looper.loop (Looper.java:251)   at
> android.app.ActivityThread.main (ActivityThread.java:6572)   at
> java.lang.reflect.Method.invoke (Native Method)   at
> com.android.internal.os.Zygote$MethodAndArgsCaller.run
> (Zygote.java:240)   at com.android.internal.os.ZygoteInit.main
> (ZygoteInit.java:767)

在我的项目中没有突出显示特定的类/文件/行,并且没有在调试 android 时通常期望的“由”行。

谷歌搜索任何单独的行似乎只带我到关于空指针异常的问题,这不是(无论如何我已经知道如何调试这些,所以请不要责备我调试空指针)。

我真正需要一些建议的是,在这个非常有限的跟踪中从哪里开始调试/重新创建崩溃。

有趣的是(也许)它只在 android 8.0 上被报道过 > 但在各种各样的设备上

【问题讨论】:

    标签: java android android-studio google-play


    【解决方案1】:

    ANR 是 Application Not Responding 的缩写。 Android 开发者网站上有一篇关于调试这些here 的文章。要理解的关键是,这意味着您的应用程序正在执行一些在 UI 线程上需要很长时间的事情。常见的杯子有:

    • 使用网络
    • 使用磁盘
    • 一些密集的计算
    • 访问数据库

    你知道这发生在android.app.ActivityThread.performLaunchActivity

    幸运的是,Android 是开源的,所以如果你谷歌“android source performLaunchActivity”,你会找到the source code as the top result

    您可以看到这是启动您的应用的代码。因此,您的应用程序启动中的某些内容运行非常缓慢。您可以做很多事情来对此进行调查:

    • 在应用启动时查找访问磁盘、网络或数据库的代码并将其移至后台线程
    • strict mode 中运行您的应用程序,它会警告您不良行为
    • 上面链接的文章中还有很多提示。

    【讨论】:

      【解决方案2】:

      ANR,Application Not Responding,当您的应用在主线程上做太多工作时发生,通常是由于磁盘或网络 I/O。

      试着检查一下。我想你可以StrictMode来调试它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-13
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        相关资源
        最近更新 更多