Activity.runOnUiThread() 忘是亡心i 2023-06-22 03:27 11阅读 0赞 主线程(UI线程):主要来完成UI绘制和响应用户的操作(Activity、Service等组件的回调函数都在UI线程中运行) 子线程(工作进程):完成一些耗时操作,也能避免ANR 理解:利用子线程减轻主线程的负担 主线程负责更新UI,在子线程中通过网络请求或一些其他的耗时操作后,一般更新UI采用Handle+Thread,但操作比较繁琐,所以介绍以下runOnUiThread方法。 如下,它能把Runnable中的代码放到UI线程之中去执行。 ![在这里插入图片描述][20190824191325579.png] 然后来看一下源码:先判断当前的线程是否是主线程,如果是主线程就直接执行Runnable接口的run()方法,如果不是主线程 就调用Handler的post(Runnable)方法。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYxMzk1_size_16_color_FFFFFF_t_70] 当 mHandler.post(action)执行的时候(不是主线程) Handler将会: 1.在主线程里通过无参的构造方法创建一个Handle 2.把这个消息添加到UI线程的Looper的消息队列 3.进行排队,当轮到这个信息时,主线程便会执行它 [20190824191325579.png]: https://img-blog.csdnimg.cn/20190824191325579.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYxMzk1_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20190824192247763.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYxMzk1,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...