作者abcb1 (一票難求!)
看板AndroidDev
標題[問題] Looper.loop() 可以改成 non block嗎
時間Tue Aug 22 10:35:35 2017
請問各位前輩
我目前想做的功能是 我開一個 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 處理好像有點?)
希望大家能多給些意見 先在此感謝各位的回答
--
Everything is allright
Tomorrow"ll be fine
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.178.86
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1503369340.A.212.html
1F:→ ssccg: looper就用來處理message queue的,有事要做就發到message 08/22 12:51
2F:→ ssccg: queue就好幹麻要動looper? 08/22 12:51
3F:→ ssccg: 專門一個thread處理message有點什麼? 08/22 12:52
4F:→ ssccg: 嫌thread太閒就多發點message不就好了 08/22 12:55
5F:推 KeySabre: 原po完全誤解looper用途吧 08/22 21:19
6F:→ y3k: 你用Handler就好了 08/22 22:53