Activity.runOnUiThread()

主线程(UI线程):主要来完成UI绘制和响应用户的操作(Activity、Service等组件的回调函数都在UI线程中运行)
子线程(工作进程):完成一些耗时操作,也能避免ANR
理解:利用子线程减轻主线程的负担

主线程负责更新UI,在子线程中通过网络请求或一些其他的耗时操作后,一般更新UI采用Handle+Thread,但操作比较繁琐,所以介绍以下runOnUiThread方法。

如下,它能把Runnable中的代码放到UI线程之中去执行。
在这里插入图片描述
然后来看一下源码:先判断当前的线程是否是主线程,如果是主线程就直接执行Runnable接口的run()方法,如果不是主线程 就调用Handler的post(Runnable)方法。
在这里插入图片描述
当 mHandler.post(action)执行的时候(不是主线程)
Handler将会:
1.在主线程里通过无参的构造方法创建一个Handle
2.把这个消息添加到UI线程的Looper的消息队列
3.进行排队,当轮到这个信息时,主线程便会执行它

发布了77 篇原创文章 · 获赞 411 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/qq_42761395/article/details/100056132
今日推荐