第三个开机画面是由应用程序bootanimation来负责显示的应用程序bootanimation在启动脚本bootanim.rc被配置称一个服务,如下所示:service bootanim /system/bin/bootanimation。
class core animation user graphics group graphics audio disabled oneshot ioprio rt 0
task_profiles MaxPerformance应用程序bootanimation的用户设置graphics,用户组名称被设置graphics需要注意的是,用来启动应用程序bootanimation的服务是disable的,即init进程在启动的时候,不会主动将应用程序bootanimation启动起来。
当SurfaceFlinger服务启动的时候,它会通过修改系统属性ctl.start的值来通知init进程启动应用程序bootanimation,以便可以显示第三个开机画面,而当System进程将系统中的关键服务都启动起来之后,ActivityManagerService服务就会通知
SurfaceFlinger服务来修改系统属性ctl.stop的值,以便可以通知init进程停止执行应用程序bootanimation,即停止显示第三个开机画面接下来我们就分别分析第三个开机画面的显示过程和停止过程。
BootAnimation类间接地继承了RefBase类,并且重写了RefBase类的成员函数OnFirstRef,因此,当一个BootAnimation对象第一次被智能指针引用的时,这个BootAnimation对象的成员函数onFirstRef就会被调用。
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。