[問題] 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