Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3152143
  • 博文数量: 1805
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 20:01
文章分类

全部博文(1805)

文章存档

2017年(19)

2016年(80)

2015年(341)

2014年(438)

2013年(349)

2012年(332)

2011年(248)

分类: Android平台

2016-04-12 09:45:29

.


init主进程启动,解析init.rc后依次exec fork启动相关的进程,其中以class main和core为首的service将会率先启动,这里SF将会触发init启动一个bootanimation进程,其会开始启动动画显示,后台其他服务进程完成初始化,待Systemserver的其他核心service启动后,ActivityManagerService将会初始化完成并启动第一个lunch activity即桌面程序,在渲染图像前,需要让SF停止动画的显示,故由AMS通知SF停止显示,以方便Lunch最终display到UI上。这段显示的时间,基本就是后台服务的初始化运行,其中以SystemServer的耗时较长,导致开机动画一直循环显示。



通过 property_get("system_init.startsurfaceflinger", propBuf, "1");
在init.rc来决定启动的sufaceflinger在systemsever还是直接由init的main启动。


char propBuf[PROPERTY_VALUE_MAX];
    property_get("system_init.startsurfaceflinger", propBuf, "1");
    if (strcmp(propBuf, "1") == 0) {
        // Start the SurfaceFlinger   //在 init.rc中通过setprop system_init.startsurfaceflinger 0或者1,属性值为如果是1则在Systemserver中直接启动,否则以一个单独的main进程启动                                                                                                 SurfaceFlinger::instantiate();    }
 
    property_get("system_init.startsensorservice", propBuf, "1");
    if (strcmp(propBuf, "1") == 0) {
     // Start the sensor service
        SensorService::instantiate();
    }



阅读(1244) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~