如何解决 java.lang.RuntimeException 问题?

21
谷歌开发者控制台显示,我的应用在过去一个月内收到了两个相同的错误,但这个RuntimeException并没有指定错误来源的类或文件。我看不出有什么具体的问题。以下是两个不同设备的错误信息:

Samsung Galaxy S8 Active (cruiserlteatt),4096MB RAM,Android 7.0报告1/2

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2984)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3045)
  at android.app.ActivityThread.handleRelaunchActivity 
(ActivityThread.java:4978)
  at android.app.ActivityThread.-wrap21 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1648)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6781)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
(ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

Samsung Galaxy S7 (heroqltespr), 4096MB RAM, Android 7.0 第2个报告,共计2个报告

java.lang.RuntimeException: 
  at android.app.ActivityThread.performLaunchActivity 
(ActivityThread.java:2947)
  at android.app.ActivityThread.handleLaunchActivity 
(ActivityThread.java:3008)
  at android.app.ActivityThread.handleRelaunchActivity 
(ActivityThread.java:4974)
  at android.app.ActivityThread.-wrap21 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1656)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6688)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 
 (ZygoteInit.java:1468)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)

是什么导致了这个错误?这仅发生了两次,提供的日志并没有像其他我能够解决的错误一样显示Java类或XML文件。

如果有人能帮助我解决这个问题,将不胜感激,非常感谢。


2
@greenapps 没有任何遗漏,我已经提供了所有内容,并在我的帖子中明确说明了。 - 4u53r
1
这个RuntimeException没有指明错误来自哪个类或文件。但是实际上它是由RuntimeException类中的ActivityThread.java文件的第2984行引起的。 - user207421
8
您解决了这个问题吗?我也偶尔在我的一个应用程序中遇到了这个问题。但是我似乎无法在我的模拟器或设备上重现这个问题。 - bremen_matt
1
Google,拯救我们所有人... - Starwave
1
你有没有找到解决方案?我也遇到了这个错误... - coderpc
显示剩余4条评论
1个回答

6
根据源代码,在ActivityThread.performLaunchActivity中有两个位置会抛出RuntimeException异常。它们分别是:
    } catch (Exception e) {
        if (!mInstrumentation.onException(activity, e)) {
            throw new RuntimeException(
                "Unable to instantiate activity " + component
                + ": " + e.toString(), e);
        }
    }

并且

    } catch (Exception e) {
        if (!mInstrumentation.onException(activity, e)) {
            throw new RuntimeException(
                "Unable to start activity " + component
                + ": " + e.toString(), e);
        }
    }

正如您所看到的:

  • 它们都为RuntimeException提供了一个消息,其中包含原始异常的异常消息。
  • 它们都将原始异常(e)传递给RuntimeException构造函数,以便正确链接。

如果没有因果异常消息(至少)和因果异常堆栈跟踪,或者您的完整应用程序源代码,诊断您的问题几乎是不可能的。

您需要弄清楚如何让Google Developer Console给您缺失的信息,或者让logcat记录它们。如果没有缺失的信息,我们无法帮助您。

除此之外,我可以建议您尝试诊断这类问题的最佳方法是查看Android源代码。(在这里并不是很有帮助...但如果您有缺失的诊断信息,它将非常有用。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接