作者GooLoo (平凡)
看板AndroidDev
标题Thread
时间Sun Apr 2 16:24:22 2017
http://ideone.com/bVJ1J4
请问一下
为什麽我button2可停止runnable1
但i=100那边就不行
我有读log,有执行removeCallbacks说
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.229.62
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1491121466.A.DB9.html
1F:推 aids61517: 我猜是i初始化的位置不对,你全部都使用runnable1 04/02 18:58
2F:→ aids61517: 所以i只会被初始化一次,你执行第二次後i都会大於100 04/02 18:59
3F:→ aids61517: 我好像看错了0.0 04/02 19:05
4F:→ GooLoo: i的值有log出,是对的,只是数到100以上,停不下 04/02 21:26
5F:→ nick03008: 将 runnable 内的 remove的参数改为 this 看看 04/02 21:40
6F:→ ssccg: run里面最後的执行顺序是 handler1.sendMessage → 04/03 04:16
7F:→ ssccg: handler1.removeCallbacks → 结束换handler handleMessage 04/03 04:18
8F:→ ssccg: → handler1.post 以上最後结果就是handler再跑一次run 04/03 04:18
9F:→ ssccg: 解决方法就是最後加个else,把sendMessage放在else里面 04/03 04:20
10F:→ ssccg: 需要再搞清楚handler、message queue的原理 04/03 04:23
11F:→ ssccg: 另外要注意new Handler(),这样handler还是跑在main thread 04/03 04:25
12F:→ ssccg: 并没有另一个thread 04/03 04:28
13F:→ ssccg: 其实run里面的removeCallbacks是多余的,post只会执行一次 04/03 04:32
14F:→ ssccg: 没再sendMessage/post本来就不会再跑 04/03 04:32
※ 编辑: GooLoo (1.34.229.62), 04/03/2017 08:29:18
15F:→ GooLoo: 感谢ssccg大大, 我有在各函式中加Log, 看跑的顺序了 04/03 08:45
16F:→ y3k: 你应该搞错Handler的用法了 04/03 13:28
17F:推 zop: 这个不是thread... 04/03 14:38