作者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/cn.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