[问题] 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