Android 4.4.4上的奇怪运行时异常

时间:2014-11-03 10:04:38

标签: java android exception

我从Flurry Analytics获得了这个奇怪的堆栈跟踪,我不知道它来自哪里。所有类都来自android系统,而不是一行告诉我它来自哪里。

在使用android 4.4.4的同一设备上发生此错误3次

有什么想法吗?感谢。

java.lang.RuntimeException
android.app.ActivityThread.performResumeActivity(ActivityThread.java:2836)
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2865)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2291)
android.app.ActivityThread.access$800(ActivityThread.java:144)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
android.os.Handler.dispatchMessage(Handler.java:102)
android.os.Looper.loop(Looper.java:212)
android.app.ActivityThread.main(ActivityThread.java:5135)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
dalvik.system.NativeStart.main(Native Method)

Caused by: android.app.ActivityThread.deliverResults(ActivityThread.java:3455)
android.app.ActivityThread.performResumeActivity(ActivityThread.java:2823)
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2865)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2291)
android.app.ActivityThread.access$800(ActivityThread.java:144)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
android.os.Handler.dispatchMessage(Handler.java:102)
android.os.Looper.loop(Looper.java:212)
android.app.ActivityThread.main(ActivityThread.java:5135)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:1)

这里的部分问题似乎是Flurry错误报告遗漏了重要信息。

无论如何,这是我认为异常的来源:

private void deliverResults(ActivityClientRecord r, List<ResultInfo> results) {
    final int N = results.size();
    for (int i=0; i<N; i++) {
        ResultInfo ri = results.get(i);
        try {
            if (ri.mData != null) {
                ri.mData.setExtrasClassLoader(r.activity.getClassLoader());
            }
            if (DEBUG_RESULTS) Slog.v(TAG,
                    "Delivering result to activity " + r + " : " + ri);
            r.activity.dispatchActivityResult(ri.mResultWho,
                    ri.mRequestCode, ri.mResultCode, ri.mData);
        } catch (Exception e) {
            if (!mInstrumentation.onException(r.activity, e)) {
                throw new RuntimeException(
                        "Failure delivering result " + ri + " to activity "
                        + r.intent.getComponent().toShortString()
                        + ": " + e.toString(), e);
            }
        }
    }
}

(此代码不是来自Android 4.4.4,但这个特殊方法在我看过的版本中是相同的......)

似乎deliverResults正在捕获一些异常,它在堆栈中进一步上升,并将其包装/重新设置为RuntimeException。在构造异常时,它有一条消息,cause。无论生成什么,堆栈跟踪都删除了这些信息,这将使诊断变得困难。