关于Handler使用遇到的问题--多执行了些循环。

NO0111 2015-09-09 05:49:44
我所写的代码如下所示:
我的目的是想让一个文本框里的数值每秒加1,通过使用handler实现。当index数值大于等于5的时候,就通过将flag布尔值设为false将线程停止。然后我遇到的问题是当文本框里的数值大于5的时候虽然textview里的值不再改变,但是while里竟然还在执行循环,index值还在加,index甚至加到了6,对此,我表示很不理解。希望能有大神可以作出解答。




...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Arnold9009 2015-09-10
  • 打赏
  • 举报
回复
很正常,你的flag是一个成员变量,flag的值修改之后,在另外一个线程中反馈出来是需要时间的 这种线程间的共享资源,一般都是要用互斥锁来保护的
NO0111 2015-09-10
  • 打赏
  • 举报
回复
引用 4 楼 weilexuexia 的回复:
[quote=引用 1 楼 q3733353520 的回复:] 在各个修改flag的位置,打印falg
我把 Thread.sleep(1000);这句代码放在mhandler.sendMessage(mhandler.obtainMessage(1,data));后貌似就正常了,虽然还是不知道具体原因。[/quote] 我把 Thread.sleep(1000);这句代码放在mhandler.sendMessage(mhandler.obtainMessage(0,data));后貌似就正常了,虽然还是不知道具体原因。
NO0111 2015-09-10
  • 打赏
  • 举报
回复
引用 1 楼 q3733353520 的回复:
在各个修改flag的位置,打印falg
我把 Thread.sleep(1000);这句代码放在mhandler.sendMessage(mhandler.obtainMessage(1,data));后貌似就正常了,虽然还是不知道具体原因。
LichKingSZ 2015-09-09
  • 打赏
  • 举报
回复
用同步锁,代码自己GOOGLE一下吧
  • 打赏
  • 举报
回复
在各个修改flag的位置,打印falg

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧