ICS SystemUI启动

1,SystemUI
ICS SystemUI启动_第1张图片

2,SystemUI启动
        启动SystemUI的Service是SystemUIService,SystemUIService则是在SystemServer.java中被启动,如:

static final void startSystemUi(Context context) {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.systemui",
                    "com.android.systemui.SystemUIService"));
        Slog.d(TAG, "Starting service: " + intent);
        context.startService(intent);
    }

startSystemUi()方法被ServerThread线程的run()方法调用,启动SystemUIService。大家都知道,Android的启动流程分为:先跑内核,再启动Android,最后启动Launcher;SystemServer处于Android启动部分,大致流程(init-->ServiceManager-->Zygote-->SystemServer--> ...),SystemServer初始化Android系统的Java层服务,然后通过Servicemanager的addService()方法,添加到ServiceManager的管理中,如:

try {
    Slog.i(TAG, "Status Bar");
    statusBar = new StatusBarManagerService(context, wm);
    ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar);
} catch (Throwable e) {
    reportWtf("starting StatusBarManagerService", e);
}
StatusBarManagerService是SystemUI启动时添加的一个重要的服务,虽然它只是一个IBinder实现类,并非一个真正的Service,是SystemUI的业务实现类。
public class StatusBarManagerService extends IStatusBarService.Stub
    implements WindowManagerService.OnHardKeyboardStatusChangeListener

SystemUIservice类是一个Service实现类,是SystemUI的核心类,所有的业务逻辑和UI的装载都是从这开始。

总结:SystemUI的启动流程,开机-->SystemServer-->SystemUIService

原文参考:http://blog.csdn.net/yihongyuelan/article/details/7623578


你可能感兴趣的:(SystemUI,SystemUIService)