android是线程安全的,所以次线程是没办法对UI线程进行操作。针对这个问题,android提供了handler消息管理。通常来说handler有两个用途:
1、改变ui界面
2、执行线程
当需要在别的线程中改变UI界面的,没办法直接操作UI,只能发送消息给handler,然后通过handler来改变ui界面。
handler的第二个用途就是执行线程。很多人可能会觉得线程的执行也就是执行整个runnable,但是在handler源码中是这样处理runnable:
message.callback.run();
也就是说直接调用了runnable的run方法,而不是去statrt一个线程,因此该runnable中run的内容还是在主ui线程中去执行。