1? ?SystemServer.java -> startSystemUi()
? ? ?static final void startSystemUi(Context context, WindowManagerService windowManager) {
? ? ? ? Intent intent = new Intent();
? ? ? ? intent.setComponent(new ComponentName("com.android.systemui",
? ? ? ? ? ? ? ? ? ? "com.android.systemui.SystemUIService"));
? ? ? ? intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);
? ? ? ? //Slog.d(TAG, "Starting service: " + intent);
? ? ? ? context.startServiceAsUser(intent, UserHandle.SYSTEM);
? ? ? ? windowManager.onSystemUiStarted();
? ? }
2? SystemUIService.java->onCreate()
((SystemUIApplication) getApplication()).startServicesIfNeeded();
3 SystemUIApplication.java->startServicesIfNeeded()
private void startServicesIfNeeded(Class<?>[] services) {
? ? ? ? if (mServicesStarted) {
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? if (!mBootCompleted) {
? ? ? ? ? ? // check to see if maybe it was already completed long before we began
? ? ? ? ? ? // see ActivityManagerService.finishBooting()
? ? ? ? ? ? if ("1".equals(SystemProperties.get("sys.boot_completed"))) {
? ? ? ? ? ? ? ? mBootCompleted = true;
? ? ? ? ? ? ? ? if (DEBUG) Log.v(TAG, "BOOT_COMPLETED was already sent");
? ? ? ? ? ? }
? ? ? ? ? ?...................
? ? ? ? ? ?mServices[i].start(); //開啟服務
? ? ? ? }