[問題] Looper.loop() 可以改成 non block嗎

作者: abcb1 (一票難求!)   2017-08-22 10:35:35
請問各位前輩
我目前想做的功能是 我開一個 thread
可以接收 main thread 來的message做處理(轉成自己的指令格式用socket傳給server)
同時也要監聽server是否有回應
現在的問題是 我用Looper來收 main thread message
但loop()當messgae queue沒東西會卡住
我希望做到的是 在Message queue沒東西時還能做其他的事 (像下面的架構)
private class ClientThread implements Runnable {
@Override
public void run() {
while(true) {
......
......
looper.loop() // 正常會卡住
............. // 我想做的事
}
}
}
請問有辦法讓 loop non block嗎
我目前想到的另一個做法是把我要做的事 寫成 IdleHanlder 綁定到 message queue
讓 queue空的時候去做我指定的事
但還是想請問各位
1. loop() 有辦法 nonblock嗎
2. 或者有什麼其他建議的做法 我想這個問題應該很多人會遇到
(專門開一個 thread 只能做meesgae 處理好像有點?)
希望大家能多給些意見 先在此感謝各位的回答
作者: ssccg (23)   2017-08-22 12:51:00
looper就用來處理message queue的,有事要做就發到messagequeue就好幹麻要動looper?專門一個thread處理message有點什麼?嫌thread太閒就多發點message不就好了
作者: KeySabre (KeySabreur)   2017-08-22 21:19:00
原po完全誤解looper用途吧
作者: y3k (激流を制するは静水)   2017-08-22 22:53:00
你用Handler就好了

Links booklink

Contact Us: admin [ a t ] ucptt.com