总结:从源码分析,post与sendMessage本质是一样的,最后返回的都是sendMessageDelayed;post()通过调用getPostMessage()方法将Runnable赋值到Message的callback变量中;消息处理:Looper从MessageQueue中取出Message之后,会调用dispatchMessage方法进行处理;dispatchMessage两种情况1、如果Message的callback不为null,一般为通过post方式,会直接执行Runnable的run()。因此这里的Runnable实际上就是一个回调接口,跟线程Thread没有任何关系;2、如果Message的callback为null,这种一般为sendMessage的方式,则会调用handlerMessage()方法进行处理;ThreadLocal是一个能创建线程局部变量的类。通过ThreadLocal提供的get和set方法,可以为每一个使用该变量的线程保存一份数据副本,且线程之间是不能相互访问,从而达到变量在线程间隔离、封闭的效果。
暂无评论