android开机动画分为正常开机动画启动和休眠唤醒后启动开机动画
1.正常开机动画启动:
正常开机动画是在 SurfaceFlinger.java的init方法里面启动的:
主要是设置ctl.start属性值为bootanim就会启动开机动画。
2.休眠唤醒开机动画启动。
休眠唤醒开机动画是在IpoManagerService.java里面
调用lowPowerHuBoot后会调用开机动画:
3.hardware层接收通知:
/hardware/interfaces/automotive/vehicle/2.0/default/impl/vhal_v2_0/f202mca/CmdSmdManager.cpp
prop = toInt(VehicleProperty::VENDOR_MCU_POWER_MODE1);
commInt32Data(prop, powd);
这个就是通知到Car里面去:
packages/services/Car/service/src/com/android/car/hal/PowerHalService.java
/hardware/interfaces/automotive/vehicle/2.0/default/impl/vhal_v2_0/McuController.cpp
4.在Car里面CarPowerManagementService.java中接收mcu电源状态回调:
5.MSG_POWER_WAKEUP会调用到doHandlePowerWakeup中,然后调用powerWakeup,最后调用到PowerManager的LowPowerStopIPO(1),PowerManager.java调用到PowerManagerService.java,:
下面是PowerManagerService的LowPowerStopIPO方法:
注:关闭开机动画命令setprop service.bootanim.exit 1 (开机动画时需要设置为0)