感谢您的阅读与点赞!欢迎点击右上角关注:「大猫玩程序」

微信公众号:大猫玩程序

上一节讲解了SystemServer的架构以及被Zygote 进程fork的流程,这一节重点讲解SystemServer启动后做了什么, 加载了哪些服务。

Android 10.0系统源码取经之路——启动篇

Android系统架构浅析-「Android取经之路」

Android是怎么启动的-「Android取经之路」

Android 10.0系统启动之init进程(二)-「Android取经之路」

Android 10.0系统启动之init进程(二)-「Android取经之路」

Android 10.0系统启动之init进程(三)-「Android取经之路」

Android 10.0系统启动之init进程(四)-「Android取经之路」

Android 10.0系统启动之Zygote进程(一)-「Android取经之路」

Android 10.0系统启动之Zygote进程(二)-「Android取经之路」

Android 10.0系统启动之Zygote进程(三)-「Android取经之路」

Android 10.0系统启动之Zygote进程(四)-「Android取经之路」

Android 10.0系统启动之SystemServer进程(一)

4.2 SystemServer 启动后的流程

4.2.1[SystemServer.java] main

说明:main函数由Zygote进程 fork后运行,作用是new 一个SystemServer对象,再调用该对象的run()方法

源码:

public static void main(String[] args) {

//new 一个SystemServer对象,再调用该对象的run()方法

new SystemServer().run();

}

4.2.2[SystemServer.java] run

说明:先初始化一些系统变量,加载类库,创建Context对象,创建SystemServiceManager对象等候再启动服务,启动引导服务、核心服务和其他服务

源码:

private void run() {

try {

traceBeginAndSlog("InitBeforeStartServices");

// Record the process start information in sys props.

//从属性中读取system_server进程的一些信息

SystemProperties.set(SYSPROP_START_COUNT, String.valueOf(mStartCount));

SystemProperties.set(SYSPROP_START_ELAPSED, String.valueOf(mRuntimeStartElapsedTime));

SystemProperties.set(SYSPROP_START_UPTIME, String.valueOf(mRuntimeStartUptime));

EventLog.writeEvent(EventLogTags.SYSTEM_SERVER_START,

mStartCount, mRuntimeStartUptime, mRuntimeStartElapsedTime);

//如果一个设备的时钟是在1970年之前(0年之前),

//那么很多api 都会因为处理负数而崩溃,尤其是java.io.File#setLastModified

//我把把时间设置为1970

if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {

Slog.w(TAG, "System clock is before 1970; setting to 1970.");

SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);

}

//如果时区不存在,设置时区为GMT

String timezoneProperty = SystemProperties.get("persist.sys.timezone");

if (timezoneProperty == null || timezoneProperty.isEmpty()) {

Slog.w(TAG, "Timezone not set; setting to GMT.");

SystemProperties.set("persist.sys.timezone

android system_server中的dump_Android 10.0系统启动之SystemServer进程(二)相关推荐

  1. Android 10.0 系统启动之SystemServer进程-[Android取经之路]

    摘要:上一节讲解了Zygote进程的整个启动流程.Zygote是所有应用的鼻祖.SystemServer和其他所有Dalivik虚拟机进程都是由Zygote fork而来.Zygote fork的第一 ...

  2. Android 10.0系统启动之init进程-[Android取经之路]

    摘要:init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取ini ...

  3. Android10.0系统启动之Zygote进程-[Android取经之路]

    [Android取经之路] 的源码都基于Android-Q(10.0) 进行分析 [Android取经之路] 系列文章: <系统启动篇> Android系统架构 Android是怎么启动的 ...

  4. 用Android访问本地站点---(localhost,10.0.2.2)要区别

    2019独角兽企业重金招聘Python工程师标准>>> 输入http://localhost:8080/kankong/index.html,可是这将不会成功,为什么呢?问题是这样的 ...

  5. android system_server中的dump_SystemServer进程

    上一篇介绍了Zygote进程的创建方式以及主要做了哪些事情,其中就包括了启动SystemServer进程. SystemServer进程主要是启动了一些系统服务,AMS.WMS.PMS等都是运行在Sy ...

  6. linux中realplayer.rpm格式的软件安装,Linux中安装Realplay 10.0 的方法

    一.什么是RealPlay : Realplay 在Windows大家经常用,不必介绍:呵... ... 在一两年前,如果说Rlealplay 能在Linux操作系统中正常的运行,有点异想天开:目前看 ...

  7. Android Studio中如何将ijkplayer 0.6.3导入自己的项目中并使用

    Ijkplayer 0.6.3是较新的版本,其中的ijk-example增强了不少功能,但是里面的一些资源由于增加了依赖,使得要使用ijk-example中的资源,不像以前版本那样只须把我们需要的几个 ...

  8. Android 10.0 Activity启动详解(二)

    Android 10.0 Activity启动详解(一) 我们在上一篇博客中已经介绍了关于Activity的一些基础概念.这一篇博客我们以Android 10.0的代码来分析Activity的启动流程 ...

  9. adb改android模拟器ip地址,解决Android模拟器ip不再是10.0.2.15问题+查找模拟器ip

    1.将android模拟器打开,这是其版本(低版本的): 2.cmd进入SDK的platform-tools文件夹,这里是: D:\SDK\platform-tools 3.执行以下命令: adb s ...

最新文章

  1. leetcode算法题--1比特与2比特字符
  2. Fastboot简介
  3. Git 报错 Push to origin/master was rejected
  4. SQL case when then 的用法
  5. 蛤玮打扫教室(区间覆盖)
  6. Codeforces Round #374 (Div. 2) A. One-dimensional Japanese Crosswor 水题
  7. bean.xml配置数据源和读取配置文件配置数据源
  8. 【牛客 - 297C】little w and Segment Coverage(差分数组,区间差分,思维,卡线段树)☆
  9. spring2.5.4+hibernate3.2.6+struts2+jbpm3.2.2
  10. 升级到AKU3.3 v1.1,感受智能手机的VGA模式
  11. Python机器学习:评价分类结果003实现混淆矩阵,精准率和召回率
  12. openstack 之 kolla安装镜像
  13. NPDP产品经理小知识:商业模式画布的9个构成要素
  14. 【0】嵌入式TCP/IP协议——————Art-Net协议详解
  15. C51单片机实验——中断实验
  16. 《你和你的研究》全文
  17. apt-get指令的autoclean,clean,autoremove的区别
  18. buuctf [ElasticSearch]CVE-2015-1427
  19. (13) IFC格式说明 (Industry Foundation Class)
  20. docker实现nginx反向代理、负载均衡

热门文章

  1. 华为证实 P40 将没有 Google 服务;李世石退役;Python 3.8.1 发布 | 极客头条
  2. 开源操作系统年度技术会议图文直播
  3. 用Scala实现简单的Web和API服务器
  4. 切 5G 的蛋糕?先练好内功吧
  5. 全栈开发者意味着什么?
  6. 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
  7. 5G 兴起,物联网安全危机四伏
  8. 甲骨文中国确认裁员 900 余人;网易回应邮箱账号遭公开叫卖;我国网民达 8.29 亿 | 极客头条...
  9. 小程序的侵权“生死局”
  10. Linux “身陷囹圄”?