1. 程式人生 > >Android:Consumer closed input channel or an error occurred. events=0x8異常導致程式異常終止問題解決方案

Android:Consumer closed input channel or an error occurred. events=0x8異常導致程式異常終止問題解決方案

程式異常終止但沒有任何異常資訊,只捕獲到Log裡面下面的有用資訊:

09-19 21:57:02.222: W/InputDispatcher(153): channel '410c5958 com.nju.ecg/com.nju.ecg.wave.WaveScreen (server)' ~ Consumer closed input channel or an error occurred. events=0x8
09-19 21:57:02.222: E/InputDispatcher(153): channel '410c5958 com.nju.ecg/com.nju.ecg.wave.WaveScreen (server)' ~ Channel is unrecoverably broken and will be disposed!
09-19 21:57:02.232: W/InputDispatcher(153): Attempted to unregister already unregistered input channel '410c5958 com.nju.ecg/com.nju.ecg.wave.WaveScreen (server)'
09-19 21:57:02.232: D/dpt(153): setPerformanceMode: 2
09-19 21:57:02.232: I/ActivityManager(153): Process com.nju.ecg (pid 28658) has died.

我的程式得以解決這個問題靈感也來自這篇文章,這邊稍作總結:

很多人在問Log裡面看不到任何異常資訊,只能看到上述日誌,實際總結到最後,就是因為異常沒有得到捕獲導致客戶端崩潰,有人問我使用了全域性異常捕獲,為什麼還是捕獲不到?這裡只能告訴你,這個異常不是我們自己寫的程式碼引起的。在這裡我只能分享下我的專案為什麼會捕獲不到這個異常,其他情況大家可以聯絡起來分析分析。我的專案使用了so庫(c,c++編譯打包提供給Android使用Native方式呼叫),這個庫中有一個方法沒有捕獲異常資訊,JAVA層呼叫該方法也未捕獲異常(就算捕獲了,最多程式不崩潰,但是也看不到異常資訊),所以導致Android程式異常終止但是無任何異常顯示。

希望能幫到遇到同樣情況的朋友,其他未能捕獲的異常看各個具體專案了,這裡不做更多分析。

簡單點,so庫做一個除法,除以0,就會報著個錯,而且上層無法收到。

相關推薦

no