android 为什么不允许在子线程中访问UI

sancaiodm 面试题 2021-09-22 1200 0

 (摘自《Android开发艺术探索》) 这是因为Android的UI控件不是线程安全的,如果在多线程中并发访问可能会导致UI控件处于不可预期的状态,那么为什么系统不对UI控件的访问加上锁机制呢?

缺点有两个:

   ①首先加上锁机制会让UI访问的逻辑变得复杂

   ②锁机制会降低UI访问的效率,因为锁机制会阻塞某些线程的执行。 所以最简单且高效的方法就是采用单线程模型来处理UI操作。


子线程有哪些更新UI的方法

1>主线程中定义Handler,子线程通过mHandler发送消息,主线程Handler的handleMessage更新UI。 

2>用Activity对象的runOnUiThread方法。 

3>创建Handler,传入getMainLooper

4>View.post(Runnabler)

5> AsyncTask实现


作者:初一十五a
链接:https://juejin.cn/post/6844904111234613261


评论