2014-01-22 64 views
5

構建AOA應用程序,Android設備與外部附件通信,在這種情況下,一個Arduino。解決「應用程序已停止」崩潰錯誤

當我連接附件,我的Android應用程序正確啓動,因爲我有我的mainActivity我的意圖過濾器內的USB_ATTACHED行動。

不過,從USB附件斷開時,我的Android應用程序崩潰的不幸。

我的殼立即從TCPIP切換到USB模式下disconect但重新連接我得到一個完整的堆棧跟蹤

任何Android大師可以建議我怎麼可能調試這還基於以下logcat的輸出?

E/run  (5092): java.io.IOException: read failed: EIO (I/O error) 
D/PicasaSyncManager(4877): battery info: false 
D/UsbDeviceManager( 781): exited USB accessory mode 
E/UsbDebuggingManager( 781): got -1 reading 
E/UsbDebuggingManager( 781): Communication error: 
E/UsbDebuggingManager( 781): java.io.IOException: No such file or directory 
E/UsbDebuggingManager( 781): at android.net.LocalSocketImpl.connectLocal(Native Method) 
E/UsbDebuggingManager( 781): at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:287) 
E/UsbDebuggingManager( 781): at android.net.LocalSocket.connect(LocalSocket.java:130) 
E/UsbDebuggingManager( 781): at com.android.server.usb.UsbDebuggingManager.listenToSocket(UsbDebuggingManager.java:75) 
E/UsbDebuggingManager( 781): at com.android.server.usb.UsbDebuggingManager.run(UsbDebuggingManager.java:111) 
E/UsbDebuggingManager( 781): at java.lang.Thread.run(Thread.java:841) 
D/dalvikvm( 781): GC_FOR_ALLOC freed 1069K, 14% free 31156K/35896K, paused 54ms, total 55ms 
V/SearchControllerCache(2819): creating SearchController 
W/Sidekick_LocationOracleImpl(2819): Best location was null 
D/dalvikvm(2819): GC_FOR_ALLOC freed 514K, 5% free 18100K/18940K, paused 15ms, total 15ms 
D/audio_hw_primary( 182): select_devices: out_snd_device(0:) in_snd_device(35: voice-rec-mic) 
D/  ( 182): Failed to fetch the lookup information of the device 0000003E 
E/ACDB-LOADER( 182): Error: ACDB AudProc vol returned = -19 
I/SearchController(2819): #onHotwordDetectorStarted 
D/MainActivity(5092): ASSERT registerPhone and register =false 
D/MainActivity(5092): ASSERT registerSms and register =false 
I/WroxAccessory(5092): disconnect 
D/AndroidRuntime(5092): Shutting down VM 
W/dalvikvm(5092): threadid=1: thread exiting with uncaught exception (group=0x41e7cba8) 
E/AndroidRuntime(5092): FATAL EXCEPTION: main 
E/AndroidRuntime(5092): Process: ca.foo, PID: 5092 
E/AndroidRuntime(5092): java.lang.RuntimeException: Unable to destroy activity {ca.foo/ca.foo.MainActivity}: java.lang.IllegalArgumentException: Receiver not registered: [email protected] 
E/AndroidRuntime(5092): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3497) 
E/AndroidRuntime(5092): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3515) 
E/AndroidRuntime(5092): at android.app.ActivityThread.access$1400(ActivityThread.java:135) 
E/AndroidRuntime(5092): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249) 
E/AndroidRuntime(5092): at android.os.Handler.dispatchMessage(Handler.java:102) 
E/AndroidRuntime(5092): at android.os.Looper.loop(Looper.java:136) 
E/AndroidRuntime(5092): at android.app.ActivityThread.main(ActivityThread.java:5017) 
E/AndroidRuntime(5092): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(5092): at java.lang.reflect.Method.invoke(Method.java:515) 
E/AndroidRuntime(5092): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
E/AndroidRuntime(5092): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
E/AndroidRuntime(5092): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(5092): Caused by: java.lang.IllegalArgumentException: Receiver not registered: [email protected] 
E/AndroidRuntime(5092): at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:667) 
E/AndroidRuntime(5092): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1453) 
E/AndroidRuntime(5092): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:489) 
E/AndroidRuntime(5092): at com.wiley.wroxaccessories.UsbConnection12.close(UsbConnection12.java:115) 
E/AndroidRuntime(5092): at ca.foo.MainActivity.onDestroy(MainActivity.java:164) 
E/AndroidRuntime(5092): at android.app.Activity.performDestroy(Activity.java:5403) 
E/AndroidRuntime(5092): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1117) 
E/AndroidRuntime(5092): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3484) 
E/AndroidRuntime(5092): ... 11 more 
+0

如果有人認爲它相關,我可以發佈我的整個清單。 –

+0

改爲發佈完整的logcat/stacktrace。它應該告訴你它失敗的地方。 – 323go

+0

捕捉異常? – Submersed

回答

2

對於被拋出了IO錯誤, 我碰到:

https://code.google.com/p/android/issues/detail?id=20545

一個選項,寫入的onPause(), 功能,但一個更好的方式是:(由提到#9在同一鏈路) - 使用http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

此外,還有一個問題要正確關閉USB附件連接,這有助於你的情況 Proper way to close a USB accessory connection

+0

謝謝,我還沒有嘗試過任何一種解決方案,但你已經給我足夠的可能解決這個問題 –

1

坦率地說,因爲我不是很熟悉你的第一個例外,我試圖研究多一點它和什麼似乎最相關的描述是,它是一個ICS的錯誤 - 你可以閱讀關於它here,但我看不到arduino和NFS之間的關係。

第二個看起來更加熟悉我。我不知道這是否是可能產生的唯一一個案件(可能不是),但對我來說,這是因爲在registerReceiver(...)我傳遞兩個Context S,並在unregisterReceiver(...)其與異常準確失敗。解決方案在註冊時通過getApplicationContext()作爲上下文,並且此異常停止出現。

1

只需清除該應用程序的數據緩存/數據並重新啓動設備即可。希望一切都會正常

相關問題