[问题] Thread

楼主: GooLoo (平凡)   2017-04-02 16:24:22
http://ideone.com/bVJ1J4
请问一下
为什么我button2可停止runnable1
但i=100那边就不行
我有读log,有执行removeCallbacks说
作者: aids61517 (奇欧巴肯)   2017-04-02 18:58:00
我猜是i初始化的位置不对,你全部都使用runnable1所以i只会被初始化一次,你执行第二次后i都会大于100我好像看错了0.0
楼主: GooLoo (平凡)   2017-04-02 21:26:00
i的值有log出,是对的,只是数到100以上,停不下
作者: nick03008 (Rubikcode)   2017-04-02 21:40:00
将 runnable 内的 remove的参数改为 this 看看
作者: ssccg (23)   2017-04-03 04:16:00
run里面最后的执行顺序是 handler1.sendMessage →handler1.removeCallbacks → 结束换handler handleMessage→ handler1.post 以上最后结果就是handler再跑一次run解决方法就是最后加个else,把sendMessage放在else里面需要再搞清楚handler、message queue的原理另外要注意new Handler(),这样handler还是跑在main thread并没有另一个thread其实run里面的removeCallbacks是多余的,post只会执行一次没再sendMessage/post本来就不会再跑
楼主: GooLoo (平凡)   2017-04-03 08:45:00
感谢ssccg大大, 我有在各函式中加Log, 看跑的顺序了
作者: y3k (激流を制するは静水)   2017-04-03 13:28:00
你应该搞错Handler的用法了
作者: zop (ㄞ肝ㄞ肝~一元二十罐~)   2017-04-03 14:38:00
这个不是thread...

Links booklink

Contact Us: admin [ a t ] ucptt.com