在Sytem Server运行时,会启动多个Java线程。第一个线程用于其它Service的消息处理,第二个线程用于ActivityManagerService和ActivityThread的消息处理,第三个用于WindowManagerService及KeyGuard TokenWatcher的消息处理。
ActivityManagerService.java
public final class ActivityManagerService extends ActivityManagerNative
implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback {
final Handler mHandler = new Handler() {
WindowManagerService.java
public class WindowManagerService extends IWindowManager.Stub implements Watchdog.Monitor {
H mH = new H();
final TokenWatcher mKeyguardTokenWatcher = new TokenWatcher(
new Handler(), "WindowManagerService.mKeyguardTokenWatcher") { ...
}
private final class H extends Handler {
ActivityThread.java
public final class ActivityThread { ...
final H mH = new H();
public static final void main(String[] args) {
SamplingProfilerIntegration.start();
Process.setArgV0("<pre-initialized>");
Looper.prepareMainLooper();
if (sMainThreadHandler == null) {
sMainThreadHandler = new Handler();
}...
}
private final class H extends Handler {