Android中更新UI常见的方式有4种:runOnUIThread、handler post、handler sendMessage、view post.
先使用handler post的方法更新UI
handler.post(r)方法中需要传递进去一个Runnable对象,可以直接在里面新建一个Runnable对象,接着在Runnable的run方法中对UI进行操作
进入 handler.post(r)的源码中
可以看到,其实这种方法里面也是通过发送延迟消息的方式对UI进行操作的。
下面用handler sendMessage更新UI
该方法就是通过在子线程中发送消息通知主线程更改UI,这是比较常见的方式
下面用runOnUIThread的方法
runOnUIThread(action)需要传递一个Runnable对象作为参数,此时可以new一个Runnable再实现它的run方法,在run方法里对UI进行操作
从源码当中可以看到,系统先会判断该线程是否为UI线程,如果不是就通过handler去更新,是就通过UI线程的run方法更新
下面用view post方法
源码
其实这四种方法都是通过handler对UI进行更新的,只是具体方法形式存在大同小异的区别而已