简介

  SystemServer的进程名实际上叫做“system_server”,通常简称为SS。

  系统中的服务驻留在其中,常见的比如WindowManagerServer(Wms)、ActivityManagerSystemService(AmS)、 PackageManagerServer(PmS)等,这些系统服务都是以一个线程的方式存在于SystemServer进程中。

  SS是由Zygote通过Zygote.forkSystemServer函数fork诞生出来的。与Zygote生死与共.SS诞生后,便和生父Zygote分道扬镳,它有了自己的历史使命。
   ZygoteInit分裂产生的SS,其实就是为了调用com.android.server.SystemServer(SystemServer.java)的main函数:其中主要调用init1,init2函数.

  • init1()是native函数,启动了 c++运行时库,如:sqllite,OpenGL ES等,然后把调用线程加入Binder通信中。
  • init2在Java层,就是单独创建一个线程,用以启动系统各项服务,如:ActivityManagerService,PowerManagerService,BatteryService,WindowManagerService...注意这些服务都是线程,在SystemServer进程中.

SystemServer调用流程

SystemServer中启动服务列表

服务类名称

作用描述

启动模式

EntropyService

提供伪随机数

1.0

PowerManagerService

电源管理服务

1.2/3

ActivityManagerService

最核心的服务之一,管理 Activity

自定义

TelephonyRegistry

通过该服务注册电话模块的事件响应,比如重启、关闭、启动等

1.0

PackageManagerService

程序包管理服务

3.3

AccountManagerService

账户管理服务,是指联系人账户,而不是 Linux 系统的账户

1.0

ContentService

ContentProvider 服务,提供跨进程数据交换

3.0

BatteryService

电池管理服务

1.0

LightsService

自然光强度感应传感器服务

1.0

VibratorService

震动器服务

1.0

AlarmManagerService

定时器管理服务,提供定时提醒服务

1.0

WindowManagerService

Framework 最核心的服务之一,负责窗口管理

3.3

BluetoothService

蓝牙服务

1.0 +

DevicePolicyManagerService

提供一些系统级别的设置及属性

1.3

StatusBarManagerService

状态栏管理服务

1.3

ClipboardService

系统剪切板服务

1.0

InputMethodManagerService

输入法管理服务

1.0

NetStatService

网络状态服务

1.0

NetworkManagementService

网络管理服务

NMS.create()

ConnectivityService

网络连接管理服务

2.3

ThrottleService

暂不清楚其作用

1.3

AccessibilityManagerService 辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果 1.0
MountService 挂载服务,可通过该服务调用 Linux 层面的 mount 程序 1.0
NotificationManagerService 通知栏管理服务, Android 中的通知栏和状态栏在一起,只是界面上前者在左边,后者在右边 1.3
DeviceStorageMonitorService 磁盘空间状态检测服务 1.0
LocationManagerService 地理位置服务 1.3
SearchManagerService 搜索管理服务 1.0
DropBoxManagerService 通过该服务访问 Linux 层面的 Dropbox 程序 1.0
WallpaperManagerService 墙纸管理服务,墙纸不等同于桌面背景,在 View 系统内部,墙纸可以作为任何窗口的背景 1.3
AudioService 音频管理服务 1.0
BackupManagerService 系统备份服务 1.0
AppWidgetService Widget 服务 1.3
RecognitionManagerService 身份识别服务 1.3
DiskStatsService 磁盘统计服务 1.0

Android 内核初识(6)SystemServer进程的更多相关文章

  1. 【转】Android 内核初识(6)SystemServer进程

    简介 SystemServer的进程名实际上叫做“system_server”,通常简称为SS. 系统中的服务驻留在其中,常见的比如WindowManagerServer(Wms).ActivityM ...

  2. Android 内核初识(5)Zygote进程

    简介 Zygote本身是一个Native的应用程序,和驱动.内核等均无关系.Zygote是由init进程根据init.rc文件中的配置项而创建的. zygote最初的名字叫“app_process”, ...

  3. Android 内核初识(3)init进程

    init是一个进程,确切地说,它是Linux系统中用户空间的第一个进程.由于Android是基于Linux内核的,所以init也是Android系统中用户空间的第一个进程,它的进程号是1.作为天字第一 ...

  4. Android 内核初识(8)Binder

    简介 Binder是Android系统提供的一种IPC(进程间通信)机制.由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等.Bind ...

  5. Android 内核初识(4)属性服务器

    简介 Windows平台上有一个叫注册表的东西.注册表可以存储一些类似key/value的键值对.一般而言,系统或某些应用程序会把自己的一些属性存储在注册表中,即使下次系统重启或应用程序重启,它还能够 ...

  6. Android 内核初识(1)下载源码需求与教程

    官方文档: http://source.android.com/source/requirements.html  Requirements The Android build is routinel ...

  7. Android 内核初识(7)RefBase、LightRefBase、sp和wp

    简介 RefBase是Android中所有对象的始祖,类似MFC中的CObject及Java中的Object对象.在Android中,RefBase结合sp和wp,实现了一套通过引用计数的方法来控制对 ...

  8. Android 内核初识(2)android系统架构

    以模块角度 以Java,native,kernel角度

  9. Android(java)学习笔记161:Framework运行环境之启动SystemServer进程

          SystemServer进程是zygote孵化出的第一个进程,该进程是从ZygoteInit.java的main函数中调用startSystemServer()开始的.与启动普通进程的差别 ...

随机推荐

  1. javascript 第26节 jQuery对象

    <html> <head> <title>jQuery</title> <!--导入jquery库--> <script type=& ...

  2. SVG实现描边动画

    说起SVG,我是恨它又爱它,恨它是因为刚开始接触的时候自己傻B地想用代码去写它,其实在web上我们用它做交互也只是用了几个常用的特性而已,其他的标签知道这么一回事就成了,其实说白了它就是一种图片格式, ...

  3. Java JDK1.5、1.6、1.7新特性整理(转)

    原文链接:http://www.cnblogs.com/tony-yang-flutter/p/3503935.html 一.Java JDK1.5的新特性 1.泛型: List<String& ...

  4. 严重: Exception starting filter struts2 java.lang.NullPointerException (转载)

    严重: Exception starting filter struts2 java.lang.NullPointerException at com.opensymphony.xwork2.util ...

  5. Codevs 2611 观光旅游(floyed最小环)

    2611 观光旅游 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 某旅游区里面有N个景点.两个景点之间可能直接有道路相连,用 ...

  6. 【HeadFirst设计模式】13.与设计模式相处

    模式: 是在某情境下,针对某问题的某种解决方案. 要点: 让设计模式自然而然地出现在你的设计中,而不是为了使用而使用. 设计模式并非僵化的教条,你可以依据自己的需要采用或者进行调整. 总是使用最简单的 ...

  7. PHP 各种函数

    usleep() 函数延迟代码执行若干微秒. unpack() 函数从二进制字符串对数据进行解包. uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. time_sleep_unti ...

  8. 浅谈MVC、MVP、MVVM架构模式的区别和联系

    MVC.MVP.MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用. 一.MVC(Model-View-Controller) MVC是比较直观的架构模式 ...

  9. 一台Ubuntu server上安装多实例MySQL

    受环境所迫,在一台Ubuntu server上安装多个实例MySQL. 手动安装MySQL 环境:Ubuntu server 11.10 64bit + mysql-5.5.17-linux2.6-x ...

  10. DataGridView实现分页

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...