首先SystemServer里面重要做了添加一些服务的工作
例如:ActivityManagerService ,PowerManagerService ,WindowManagerService
代码如下:
(framework\base\services\java\com\android\server\SystemServer.java)
wm = WindowManagerService.main(context, power, display, inputManager,
wmHandler, factoryTest != SystemServer.FACTORY_TEST_LOW_LEVEL,
!firstBoot, onlyCore);
ServiceManager.addService(Context.WINDOW_SERVICE, wm);
作为一个Service注册给了ServiceManager,添加这一步之后就可以作为一个服务向客户端开放,可以接收客户端的连接申请。
添加之后还需注册服务
(framework\base\core\java\android\app\ContextImpl.java)
registerService(WINDOW_SERVICE, new ServiceFetcher() {
Display mDefaultDisplay;
public Object getService(ContextImpl ctx) {
Display display = ctx.mDisplay;
if (display == null) {
if (mDefaultDisplay == null) {
DisplayManager dm = (DisplayManager)ctx.getOuterContext().
getSystemService(Context.DISPLAY_SERVICE);
mDefaultDisplay = dm.getDisplay(Display.DEFAULT_DISPLAY);
}
display = mDefaultDisplay;
}
return new WindowManagerImpl(display);
}});