作者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/m.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