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

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



目录:
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方法然后启动服务。


                            

  • 上一篇: ip a命令详解
  • 下一篇: k2p高恪固件评测
  • 版权声明


    相关文章:

  • ip a命令详解2024-11-03 20:01:04
  • oracle 游标用法2024-11-03 20:01:04
  • 驼峰命名法属于基本的命名规范2024-11-03 20:01:04
  • tinyxml(C++ 使用TinyXML详解)2024-11-03 20:01:04
  • 新闻管理系统流程图2024-11-03 20:01:04
  • k2p高恪固件评测2024-11-03 20:01:04
  • uvm实战2024-11-03 20:01:04
  • centos8哪个版本稳定2024-11-03 20:01:04
  • 位图索引是什么2024-11-03 20:01:04
  • java抽象类什么意思2024-11-03 20:01:04