step 0 : WindowManagerService#enableScreenAfterBoot() call performEnableScreen(), if checkBootAnimationCompleteLocked is false , return .else tell SurfaceFlinger BOOT FINISHED . call call mActivityManager.bootAnimationComplete().
checkBootAnimationCompleteLocked()
step 1: send CHECK_IF_BOOT_ANIMATION_FINISHED
step 2 : checkBootAnimationCompleteLocked : condition is : SystemService.isRunning(BOOT_ANIMATION_SERVICE))
step 3: if isRunning,will send CHECK_IF_BOOT_ANIMATION_FINISHED every 50ms.
step 4 if bootAnimationComplete ,call performEnableScreen.
Who calls enableScreenAfterBoot()
to be continued.
private static final int BOOT_ANIMATION_POLL_INTERVAL = 50;
todo:
SystemProperties.set(“sys.boot_completed”, “1”);
checkSlow
IBinder surfaceFlinger = ServiceManager.getService(“SurfaceFlinger”);
SystemProperties.set(“service.bootanim.exit”, “1”);