这真是谢特,晴天霹雳 啊~。
最近项目开发周期比较紧。所以码起代码来像handler这些使用基本就不多思考。结果怪现象来了。
问题:
mHandler.post(new Runable(){...});里面的runabel不执行。纠结了,怎么会不执行。一开始以为那边把消息队列堵塞了。但mHandler.sendMessage()都成功。看了半天源码才发现问题。见下图
很多人在继承dispatchMessage时都将supper的dispatchMessage方法删了。这样接收消息完全正常,但在post的时候就出现问题了。这时候的runable根本就没有加入消息队列。从而导致了runable方法没有被执行。
千里之堤毁于蚁穴,希望能为读者带来启示。