CountDownTimer⼩坑
最近在研究和Socket相关的⼀些东西,Java中的Socket还是⽐较易⽤的,但是⽐较坑爹的就是有时候Socket不管怎么发送,Server都接收不
到,代码也没有任何反馈,这样就需要⼀个机制确认Socket的状态。⽅法有很多种,我这⾥采⽤了⼼跳,超时计时选⽤了CountDownTimer,
原来也⽤过,也知道他内部使⽤Handler实现的,感觉能⽤还算靠谱吧。然后问题就出在把本地代码融到项⽬之后。
本地代码,经过我⾃⼰测试都没有什么问题,⼼跳也能实现。但是在融⼊项⽬之后,发现启动了两个tcpclient只有⼀个正常启动了!
经过断点debug之后,我发现在第⼆个client初始化的CountDownTimer的时候挂了,跟随初始化代码⼀路点进去,发现是Handler初始化的时
候挂掉了。
了解Android消息机制的⼈看到这⼀定就知道原因了,对:不能在没有looper的线程中创建Handler,⽽CountDownTimer内部也⽤的是
Handler,⽽项⽬中则是开启了⼀个线程执⾏任务,我这⾥刚好就踩到了这个坑,最后把CountDownTimer换成了Timer。
本文发布于:2023-01-04 02:21:10,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/88016.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |