当前位置:网站首页 > 技术博客 > 正文

安卓手机开机动画怎么设置



目录:
bootanimation: frameworks/base/cmds/bootanimation/
surfaceflinger : frameworks/native/services/surfaceflinger/
init : system/core/init/
文件:
main_surfaceflinger.cpp : frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp

内核起来后会启动第一个进程,即init进程。
init进程会根据配置bootanim.rc还有surfaceflinger.rc(以前都包含在init.rc中)启动surfaceflinger进程。由于bootanim.rc文件中包含 disabled,所以现在并不会启动。
bootanim.rc文件:

 

surfaceflinger.rc文件:

 
 

后面会调用

 
 

接下来打开同目录下的SurfaceFlinger.cpp,看他的init()执行了什么。

 
 
 
 
 

可以看到,执行了一个方法StartPropertyService(&property_fd); 。对应的文件是property_service.cpp(与init.cpp同目录)。还有一段while (true) {},里面会在条件为true的情况下不断执行 HandleControlMessages();接下来我们看看property_service.cpp里面执行了什么。
在里面搜索方法 StartPropertyService。发现里面执行了

 

接下来在里面搜索方法 StartSendingMessages。发现里面只是进行了数据赋值。

 

我们接下来在里面搜索PropertyServiceThread。发现它是一个方法。

 
 
 

我们接下来在里面搜索SendControlMessage方法,发现里面和msg相关的只有QueueControlMessage方法。

 

我们接下来在里面搜索QueueControlMessage方法,发现没有搜到,于是在init.cpp里面搜索,QueueControlMessage方法。

 

可以发现调用了pending_control_messages的push方法。在里面搜索pending_control_messages得知它是一个队列。

 

上面我们说到在条件为true的情况下会不断执行 HandleControlMessages()。

 
 
 

所以最后会执行 DoControlStart方法, function(service) 这里的function就是 DoControlStart方法然后启动服务。


                            

版权声明


相关文章:

  • api自动化测试工具有哪些2024-11-03 20:01:04
  • html表单有哪些2024-11-03 20:01:04
  • javascript模块化编程2024-11-03 20:01:04
  • linux 用户添加组命令2024-11-03 20:01:04
  • html.iframeref2024-11-03 20:01:04
  • 目前公认最流畅的linux2024-11-03 20:01:04
  • string数组个数2024-11-03 20:01:04
  • md5值如何计算2024-11-03 20:01:04
  • 格式化字符串%n2024-11-03 20:01:04
  • 新建okr的过程中,我们的o可能来自2024-11-03 20:01:04