Android 安卓:USB断开连接导致应用程序崩溃

Android 安卓:USB断开连接导致应用程序崩溃,android,usb,stack-trace,bugsense,Android,Usb,Stack Trace,Bugsense,有点像一个noob问题,但在分析stacktrace时,我是否正确地假设stacktrace中的第一个或最上面的项是最近的? 在我的例子中,“performDestroyActivity”是崩溃的原因还是结果 调试崩溃原因的下一步应该是什么 这是我的BugSense报告 java.lang.RuntimeException: Unable to destroy activity {ca.foo.awesomeapp/ca.foo.awesomeapp.MainActivity}: java.la

有点像一个noob问题,但在分析stacktrace时,我是否正确地假设stacktrace中的第一个或最上面的项是最近的? 在我的例子中,“performDestroyActivity”是崩溃的原因还是结果

调试崩溃原因的下一步应该是什么

这是我的BugSense报告

java.lang.RuntimeException: Unable to destroy activity {ca.foo.awesomeapp/ca.foo.awesomeapp.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515)
at android.app.ActivityThread.access$1400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException
at com.wiley.wroxaccessories.WroxAccessory.disconnect(WroxAccessory.java:79)
at ca.foo.awesomeapp.MainActivity.onDestroy(MainActivity.java:179)
at android.app.Activity.performDestroy(Activity.java:5403)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1117)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3484)
... 11 more

首先,logcat在文件的底部追加行。因此,最底层的stacktrace是最新的。最上面的是最先发生的(最新的是最后发生的)

要分析stacktrace,基本上从读取每行开始,直到看到应用程序中的对象。在stacktrace中,包含应用程序信息的最上面一行是崩溃的“根本”原因,而应用程序可能包含由代码行(或继承的方法行)继承或调用的对象

就你而言,这是你的罪魁祸首:

at ca.foo.awesomeapp.MainActivity.onDestroy(MainActivity.java:179)
这应该告诉您,在“onDestroy”方法内的“MainActivity”的第179行,您正在调用导致空指针异常的内容。它正上方的一行告诉您它在命中代码之前发生的位置——“WroxAccessory”——其中似乎有一个空对象,这就是它停止的位置。否则,您将看到更多关于该行的行:

at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException

这是你应用程序的主要“活套”。因此,上述方法通常没有帮助(因为其中不太可能有bug,但该代码也在运行并执行您的代码,因此它是跟踪的一部分)。

向我们展示活动中的onDestroy方法。onDestroy(MainActivity.java:179)是您活动中的问题所在。不管disconnect()方法调用是什么,都是导致空指针的原因。只要在堆栈跟踪中再往下看一点,您就会看到。谢谢,但我的一部分困惑是,我认为onDestroy处理程序应该只在您的应用程序退出时调用……在我的情况下,我不希望在断开usb连接时它退出