問題:子線程創建的Handler。如果 post?之后,在Handler.removeCallbacks(run)移除了,下次再使用Handler.postDelayed(Runnable)接口或者使用post時,Runnable是沒有執行。導致沒有收到消息。
解決辦法:只有主線程創建的,remove之后,還可以post。
原因: 在主線程new一個Handler的時候,默認使用的是當前線程的Looper,就是系統為我們創建好的MainLooper。所以不需要自己在手動寫prepare()?和?loop()函數。
如果在子線程中創建了一個Handler,那么就必須做三個操作:?prepare()、?loop()、quit()
所以留意,new Handler時機,是否在主線程。