Android中线程大致可分为3类:UI线程,Binder线程和Background线程。
UI Thread
UI线程也就是我们常说的主线程(Main Thread),在App启动时默认被创建,主要是负责UI的显示、更新和控件交互。Android中UI的更新只允许在UI线程完成,这是因为Android UI Toolkit并非线程安全(且实现线程安全也是一件非常困难的事情),所以Android运行时通过只允许UI线程更新UI的方式保证安全性。如果其他线程尝试更新UI,会得到CalledFromWrongThreadException。
Binder Thread
Binder是Android中特有的进程间通信(Intent-Process Communication)机制。Android中的进程可能需要响应来自其他进程的请求,比如系统服务(system service),内容提供器(content provider)等。这时Binder线程会被自动创建用于进程间的消息传递。通常App本身并不需要关心Binder线程,因为来自其他进程的消息都会被转到UI线程,比如Service的各种回调,除非是App自己定义的AIDL(Android Interface Definition Language)接口。
Background Thread
所有App显式创建的线程都属于后台线程。这里所谓的UI Thread和Background Thread的概念属于Android特有的特性(And