首页 > 其他分享 >SystemServer 启动流程

SystemServer 启动流程

时间:2024-03-28 13:45:22浏览次数:23  
标签:java 启动 流程 Binder 进程 服务 SystemServer

SystemServer 启动流程

一、介绍

  1. SystemServer 是 Android 进入 Launcher 前的最后准备,顾名思义,它提供了众多由 Java 语言编写的服务
  2. 在 Zygote 自启动过程中,参数 bool startSystemServer 为真的话,那么在 ZygoteInit.java/main() 就会调用函数 forkSystemServer() 生成 SystemServer 进程并启动
  3. SystemServer 进程主要用于创建系统服务,ActivityMangerService、PackageManagerService、WindowManagerService 这些重要服务都是通过 SystemServer 进程启动

SystemServer 从 frameworks/base/core/java/com/android/internal/os/ZygoteInit.java/ZygoteInit.java/forkSystemServer() 中开始研究

二、创建 SystemServer

image

三、处理 SystemServer

image

启动 Binder 线程池

  • nativeZygoteInit() 是 Native 层代码,用于启动 Binder 线程池,以便 SystemServer 进程使用 Binder 与其他进程通信

image

进入 SystemServer 的 main()

image

四、解析 SystemServer 进程

image

服务启动举例

以 PowerManagerService 服务启动为例

image

五、总结

  1. 启动 Binder 线程,以便后续与其他进程通信
  2. 创建 SystemServiceManager,用于系统服务进行创建、启动和其他声明周期管理;
  3. 启动其他系统服务

标签:java,启动,流程,Binder,进程,服务,SystemServer
From: https://www.cnblogs.com/wanghao-boke/p/18101469

相关文章

  • BBS项目创作流程
    BBS项目创作流程【零】完整文件gitee仓库BBS/BBS1.0/BlogBasedSystem·Lea4ning/DjangoObject-码云-开源中国(gitee.com)【一】项目基本配置【1】所需模块asgiref==3.7.2beautifulsoup4==4.12.3certifi==2024.2.2charset-normalizer==3.3.2Django==3.2.12f......
  • 驾御未来:车载系统全方位测试实战指南 02-车机launcher(启动器)
    车载系统全方位测试实战指南02-车机launcher(启动器)文章目录车载系统全方位测试实战指南02-车机launcher(启动器)前言一、车机launcher设计理念二、关键技术剖析1.UI/UX设计:2.语音识别与控制:3.AI算法优化:4.实时性能优化:三、未来发展趋势四、测试设计与策略1.测试......
  • Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers File exists处理
    Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINKanswers:Fileexists处理安装好centos7版本的系统后,发现默认的网卡名字有点怪,为了便于管理,可以手动修改。下面对centos7版本下网卡重命名操作做一记录:1.编辑网卡信息[root@web~]#cd/etc/sysconfig/network-scripts/......
  • 小程序部署全流程
    默认已拥有域名,且完成相关备案本期从腾讯云申请SSL证书开始1、登录腾讯云,搜索SSL,免费申请,如下: 2、假定,已完成ssl证书申请将申请来的SSL证书,配置到nginx,我这里使用的服务器是WindowsServer,#usernobody;worker_processes1;#error_loglogs/error.log;#error_log......
  • SQL查询执行流程
    在MySQL执行一条查询语句的时候,比如SELECT*FROMTWHRERID=1,这篇文章来简要的描述SQL查询的执行流程可以把整体结构分成Server层和存储引擎层,Server层包括连接器,查询缓存器,分析器,优化器,执行器。存储引擎层则有常见的InnoDB,MyISAM,Menory存储引擎,在MySQL5.5后默认使......
  • 启动 uWSGI 时日志中显示 ImportError: No module named xxx 的解决方法
    前几天在部署Vue+Django+Uwsgi+Nginx的生产环境时,发现前端部署成功了,但是一直无法获取后端的数据,检查Uwsgi日志(位于uwsgi安装目录/projects/log下)发现日志中提示“ImportError:Nomodulenamedxxx”,试过网上的各种方法还是无法解决,最终摸索出一套解决方法如下: ......
  • tomcat 启动报错javax.naming.NameNotFoundException: 名称[xxx.LoginFilter/xxxServi
    本地测试没问题,部署到服务器上的tomcat,启动报错javax.naming.NameNotFoundException:名称[xxx.LoginFilter/xxxService]未在此上下文中绑定可能是由于在Tomcat的配置文件中,资源名称[xxxx]没有正确配置或者引用。为了解决这个问题,你可以尝试以下步骤:1、检查你的Tomcat配置文......
  • Android开发-Android APP实操-1.项目创建及启动页面UI编码
    一、项目创建及模拟器安装1.选择新建一个project2. 选择空模板3.完成新project的设置 下载完成后点击Finish4.下载安卓模拟器 选择Pixel7点击下载R 为虚拟机命名,选择竖屏,点击Finish.5.点击启动,测试运行 运行成功! 二、启动页面UI编码 1.打开Main......
  • centos7 mosquitto (MQTT)安装/配置/自启动
    **************************************************************windows:>>一、安装及配置mosquitto1.下载并安装mosquitto(官网下载地址https://mosquitto.org/download/)>安装完成后进入安装目录1).编辑mosquitto.conf文件.注意系统防火墙得允许tcp1883端口#设......
  • Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash
    前言:前面我们都是使用JTAG方式下载比特流文件,然后下载elf文件,最后点击Runas或者Debugas来运行程序。JTAG方式是通过tcl脚本来初始化PS,然后用JTAG收发信息,优点是可以在线调试,缺点是断电后程序就丢失了。为了解决程序丢失的问题,可以制作镜像文件烧写到sd卡或者flash中,上电即......