问题:子线程创建的Handler。如果 post 之后,在Handler.removeCallbacks(run)移除了,下次再使用Handler.postDelayed(Runnable)接口或者使用post时,Runnable是没有执行。导致没有收到消息。
解决办法:只有主线程创建的,remove之后,还可以post。
原因: 在主线程new一个Handler的时候,默认使用的是当前线程的Looper,就是系统为我们创建好的MainLooper。所以不需要自己在手动写prepare() 和 loop()函数。
如果在子线程中创建了一个Handler,那么就必须做三个操作: prepare()、 loop()、quit()
所以留意,new Handler时机,是否在主线程。