AndroidDev 板


LINE

※ 引述《abcb1 (一票难求!)》之铭言: : 标题: [问题] 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 : → ssccg: looper就用来处理message queue的,有事要做就发到message 08/22 12:51 : → ssccg: queue就好干麻要动looper? 08/22 12:51 : → ssccg: 专门一个thread处理message有点什麽? 08/22 12:52 : → ssccg: 嫌thread太闲就多发点message不就好了 08/22 12:55 : 推 KeySabre: 原po完全误解looper用途吧 08/22 21:19 : → y3k: 你用Handler就好了 08/22 22:53 抱歉 补充一下我的想法 我looper会接收 main thread来的 message 然後走socket发指令给 server端 但同时也要监听有没有server端回来的 resposne 如果response也要包成message的话 我就要多开一个 thread专门去做监听的动作 然後再包成 message丢回来 (应该是这样没错?) 但我想把两个thread的事情合在一个 thread里 while (true) { 1.接收并处理 UI thread 送来的 messagee // 2.监听有无response } 不知道这样有解释到我想问能不能有 non-block looper的疑问了? y3k: 你用Handler就好了 不好意思 y3k大 我刚学 android没多久 这个叙述太简单了 我不太理解你的意思 我的确是有 handler 去处理 message 但我的 Idlehandler 是透过 MessageQueue addIdleHandler(MessageQueue.Idlehandler) 去让 looper在 queue没 message的时候 做我要做的事 感谢各位的回答 希望能跟各位再讨论一下 -- Everything is allright Tomorrow"ll be fine --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.216.178.86
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1503452032.A.D46.html
1F:→ ssccg: 你的想法有问题,while写成那样就是说一定要接到一个msg才 08/23 09:52
2F:→ ssccg: 轮到监听,一定要监听资料才处理下一个msg 08/23 09:53
3F:→ ssccg: 如果要用message处理机制达成non-blocking,本来就该用另一 08/23 09:56
4F:→ ssccg: 个thread监听再发message,不然监听这件事就会block thread 08/23 09:56
5F:→ kobe8112: 我会建议初学可以去翻些实体书,对Android的各种同步、 08/23 10:02
6F:→ kobe8112: 消息传递机制有大略的了解,再去依据需求到板上或 08/23 10:03
7F:→ kobe8112: Stack Overflow、CSDN等地方搜寻更深入的做法、讨论, 08/23 10:04
8F:→ kobe8112: 一般刚接触的朋友应该不会管到Looper去才对啊QQ 08/23 10:04
9F:→ ssccg: 如果监听是用non-blocking的API,那更单纯直接用Handler定 08/23 10:05
10F:→ ssccg: 期检查有没有新收到资料就好 08/23 10:05
11F:→ ssccg: 如果你真的就是要一送一收,block住等结果那就把送收都写在 08/23 10:07
12F:→ ssccg: 同个handleMessage就好 08/23 10:08
13F:→ ssccg: 总之都不会需要动到Looper,Looper+MessageQueue就是用来让 08/23 10:12
14F:→ ssccg: 在thread上做事变成event-driven/non-blocking,你要破坏这 08/23 10:22
15F:→ ssccg: 实作却说目标是要达成non-blocking让人无法理解... 08/23 10:22







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP