看板 AndroidDev 關於我們 聯絡資訊
http://ideone.com/bVJ1J4 請問一下 為什麼我button2可停止runnable1 但i=100那邊就不行 我有讀log,有執行removeCallbacks說 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.229.62 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1491121466.A.DB9.html
aids61517: 我猜是i初始化的位置不對,你全部都使用runnable1 04/02 18:58
aids61517: 所以i只會被初始化一次,你執行第二次後i都會大於100 04/02 18:59
aids61517: 我好像看錯了0.0 04/02 19:05
GooLoo: i的值有log出,是對的,只是數到100以上,停不下 04/02 21:26
nick03008: 將 runnable 內的 remove的參數改為 this 看看 04/02 21:40
ssccg: run裡面最後的執行順序是 handler1.sendMessage → 04/03 04:16
ssccg: handler1.removeCallbacks → 結束換handler handleMessage 04/03 04:18
ssccg: → handler1.post 以上最後結果就是handler再跑一次run 04/03 04:18
ssccg: 解決方法就是最後加個else,把sendMessage放在else裡面 04/03 04:20
ssccg: 需要再搞清楚handler、message queue的原理 04/03 04:23
ssccg: 另外要注意new Handler(),這樣handler還是跑在main thread 04/03 04:25
ssccg: 並沒有另一個thread 04/03 04:28
ssccg: 其實run裡面的removeCallbacks是多餘的,post只會執行一次 04/03 04:32
ssccg: 沒再sendMessage/post本來就不會再跑 04/03 04:32
※ 編輯: GooLoo (1.34.229.62), 04/03/2017 08:29:18
GooLoo: 感謝ssccg大大, 我有在各函式中加Log, 看跑的順序了 04/03 08:45
y3k: 你應該搞錯Handler的用法了 04/03 13:28
zop: 這個不是thread... 04/03 14:38