简介

  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. ligerUI调用$.ligerDialog.open弹出窗口关闭

    1:调用父窗口某一个文件框,获取焦点, parent.window.document.getElementById("roleName").focus(); 2:关闭父窗口 par ...

  2. leetcode之Rectangle Area

    Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...

  3. android API文档查询---context、toast、SharedPreferences

    /*查阅api ---context1.abstract AssetManager     getAssets() Returns an AssetManager instance for the a ...

  4. C++重写与重载、重定义

    文章引用自:http://blog.163.com/clevertanglei900@126/blog/static/111352259201102441934870/ 重载overload:是函数名 ...

  5. 【HeadFirst设计模式】8.模板方法模式

    模板方法 定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使用得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 策略模式: 定义一个算法家族,并让这些算法可以互 ...

  6. Flexbox完整指南- A Complete Guide to Flexbox

    背景 Flexbox 布局 (FLexible Box)模块(现在处于W3C的最终征求意见稿(Last Call Working Draft)阶段)意在提供一个更为有效的方式来进行布局.对齐和分配一个 ...

  7. rsync+inotity

    rsync默认端口:873xinetd默认服务 inotify参数详解inotifywait-r:递归-q:只打印事件-m:始终监听事件--excludei:排除--timefmt:时间格式--for ...

  8. QtSQL学习笔记(2)- 连接到数据库

    要使用QSqlQuery或者QSqlQueryModel访问一个数据库,首先需要创建并打开一个或多个数据库连接(database connections). 一般地,数据库连接是根据连接名(conne ...

  9. Linux下Qt环境的搭建

    之前一直使用Ubuntu软件中心中的Qt4开发Qt的应用程序,现在转到Linux下来做Qt5开发,但是必须从Qt官网上面下载对应的安装包,配置起来相对麻烦一些,这里介绍整个开发流程. 首先,在官网上面 ...

  10. 一个页面,多个flash(刚学jq插件)

    只贴js那部分哦 调用 // flash轮播图 var sumF=$('.btnTabs span').length/4; //有四个flash var flashT01=new flash($('. ...