只有主线程(UI)线程才能跟新UI界面,那么如果子线程想要更新UI怎么办呢?
只能借助于Handler来实现了。
(1):最常见的方式就是通过Handler的sendMessage和handleMessage来进行处理了,这个比较简单,不再举例;
(2):通过Handler的post方法,这种执行方式需要在post方法中传入执行耗时任务的线程,接着在执行post方法的时候,会将该执行任务的 线程封装到Message里面的callback属性,之后当Handler里面的Looper循环查看MessageQueue消息队列的时候会取到这 条消息,取到消息中的执行耗时操作的线程,直接执行他的run方法就可以了,我们可以在该run方法中进行更新UI操作的;
(3):通过View的post方法,这种方法实质上是通过Handler的post方法完成的;
(4):通过Activity的runOnUiThread方法,该方法同样还是通过的Handler的post方法实现的;