什么是UI线程?
常说的UI线程到底是哪个线程?UI线程一定是主线程吗?
下面先给出两条确定的结论:
- UI线程就是刷新UI所在的线程
- UI是单线程刷新的
关于第二条为什么UI只能是单线程刷新的呢?道理很简单,因为多线程访问的话需要加锁,太卡,所以一般系统的UI框架都是采用单线程实现的。
那么在Android中是否是意味着UI线程==主线程?
在Android中要在UI线程执行代码,有两种常见的调用方式:
- Activity.runOnUiThread(Runnable)
- View.post(Runnable)
如上面代码所示,对于 Activity.runOnUiThread(Runnable) 而言,非常简单,它的UI线程就是在 attach 方法中赋值的当前线程对象 mUiThread,而我们知道 attach 方法是在 Activity 启动流程中执行在Android的主线程中的,因此对 Activity 来说 UI 线程就是主线程。