0
情況非常複雜,但我會盡力解釋它。 (該代碼是從真正的應用程序簡化)異常不在處理程序消息中捕獲
我有一個自定義線程與循環處理程序。 我將消息發送給它:
...
handler.obtainMessage(...)
.sendToTarget();
...
處理程序有消息回調:
private final Handler.Callback callback = new Handler.Callback() {
public boolean handleMessage(Message msg) {
try {
//The hard work is here
SystemClock.sleep(5000)
throw new CustomException();
} catch (CustomException e) {
}
//...
//Sending the result back to the UI thread here.
//...
}
return true;
}
};
我有發送此消息RxJava包裝。
如果我只是訂閱,everythig是好的。 但是,如果我訂閱,然後取消訂閱異常沒有被捕獲,應用程序崩潰。 除了在onSubscribe
中發送消息外,RxJava包裝器不執行任何工作。
任何暗示,它怎麼可能?
堆棧跟蹤:
08-01 10:02:58.422 13655-13655/com.mycompany.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mycompany.myapp, PID: 13655
com.mycompany.myapp.util.CustomException
com.mycompany.myapp.util.LooperThread$1.handleMessage(LooperThread.java:33)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:173)
at com.mycompany.myapp.util.neulion.LooperThread.run(LooperThread.java:57)
你在哪裏創建你的'Handler'?用什麼參數?你可能使用'HandlerThread'嗎? – pskink
不,它不是'HandlerThread'。這只是'Thread'我也是在'Thread'構造函數和循環中創建它的。 –
那它看起來像什麼? – pskink