Android系统服务概览

System_Server进程

运行在system server进程中的服务比较多,这是整个android框架的基础

Native服务

SurfaceFlinger

这是framebuffer合成的服务,将各个应用程序及应用程序中的逻辑窗口图像数据(surface)合成到一个物理窗口中显示(framebuffer)的服务程序

Java服务:

这部分的服务大部分都有一个供应用进程使用的manager类,这就是一个RPC调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到system_server进程中对应的xxxManagerService中对应的方法,并将结果再通过binder带回。 

  • 1. EntropyService

熵服务,周期性的加载和保存随机信息。主要是linux开机后,/dev/random的状态可能是可预知的,这样一些需要随机信息的应用程序就可能会有问题。这个无需提供应用程序接口。

  • 2. PowerManagerService –> PowerManager

Android 的电源管理也是很重要的一部分。比如在待机的时候关掉不用的设备,待机时屏幕和键盘背光的关闭,用户操作的时候该打开多少设备等等。

  • 3. ActivityManagerService->ActivityManager

这个是整个Android framework框架中最为核心的一个服务,管理整个框架中任务、进程管理, Intent解析等的核心实现。虽然名为Activity的Manager Service,但它管辖的范围,不只是Activity,还有其他三大组件,和它们所在的进程。也就是说用户应用程序的生命管理,都是由他负责的。

  • 4. TelephonyRegistry->TelephonyManager

电话注册、管理服务模块,可以获取电话的链接状态、信号强度等等。<可以删掉,但要看的大概明白>

  • 5. PackageManagerService -> PackageManager

包括对软件包的解包,验证,安装以及升级等等,对于我们现在不能安装.so文件的问题,应该先从这块着手分析原因。

  • 6. AccountManagerService -> AccountManager

A system service that provides  account, password, and authtoken management for all accounts on the device。

  • 7. ContentService -> ContentResolver

内容服务,主要是数据库等提供解决方法的服务。

  • 8. BatteryService

监控电池充电及状态的服务,当状态改变时,会广播Intent

  • 9. HardwareService

一般是ring和vibrate的服务程序

  • 10. SensorService -> SensorManager

管理Sensor设备的服务,负责注册client设备及当client需要使用sensor时激活Sensor

  • 11. WindowManagerService -> WindowManager -> PhoneWindowManager

和ActivityManagerService高度粘合窗口管理,这里最核心的就是输入事件的分发和管理。

  • 12. AlarmManagerService -> AlarmManager

闹钟服务程序

  • 13. BluetoothService -> BluetoothDevice

蓝牙的后台管理和服务程序

  • 14. StatusBarService -> StatusBarManager

负责statusBar上图标的更新、动画等等的服务,服务不大。

  • 15. ClipboardService -> ClipboardManager

和其他系统的clipBoard服务类似,提供复制黏贴功过。

  • 16. InputMethodManagerService -> InputMethodManager

输入法的管理服务程序,包括何时使能输入法,切换输入法等等。

  • 17. NetStatService

手机网络服务

  • 18. ConnectivityService -> ConnectivityManager

网络连接状态服务,可供其他应用查询,当网络状态变化时,也可广播改变。

  • 19. AccessibilityManagerService-> AccessibilityManager

这块可能要仔细看一下,主要是一些View获得点击、焦点、文字改变等事件的分发管理,对整个系统的调试、问题定位等,也需要最这个服务仔细过目一下。

  • 20. NotificationManagerService -> NotificationManager

负责管理和通知后台事件的发生等,这个和statusbar胶黏在一起,一般会在statusbar上添加响应图标。用户可以通过这知道系统后台发生了什么事情。

  • 21. MountService

磁盘加载服务程序,一般要和一个linux daemon程序如vold/mountd等合作起作用,主要负责监听并广播device的mount/unmount/bad removal等等事件。

  • 22. DeviceStorageMonitorService

监控磁盘空间的服务,当磁盘空间不足10%的时候会给用户警告

  • 23. LocationManagerService -> LocationManager

要加入GPS服务等,这部分要细看,现在应用中的navigation没响应,可以从此处着手看一下

  • 24. SearchManagerService -> SearchManager

The search manager service handles the search UI, and maintains a registry of searchable activities.

  • 25. Checkin Service(FallbackCheckinService)

貌似checkin service是google提供的包,没有源代码,源码只有fallbackCheckinService

  • 26. WallpaperManagerService -> WallpaperManager

管理桌面背景的服务,深度定制化桌面系统,需要看懂并扩展<同时要兼容>这部分

  • 27. AudioService -> AudioManager

AudioFlinger的上层管理封装,主要是音量、音效、声道及铃声等的管理

  • 28. HeadsetObserver

耳机插拔事件的监控小循环

  • 29. DockObserver

如果系统有个座子,当手机装上或拔出这个座子的话,就得靠他来管理了

  • 30. BackupManagerService -> BackupManager

备份服务

  • 31. AppWidgetService -> AppWidgetManager

Android可以让用户写的程序以widget的方式放在桌面上,这就是这套管理和服务的接口

  • 32. StatusBarPolicy

管理哪个图标该在status bar上显示的策略。

mediaServer服务进程

MediaServer服务基本上都是native的services,mediaServer进程也是在init.rc中启动的,它不是一个daemon进程,这点容易搞混。他也是和systemserver进程类似的系统服务进程,提供应用进程的RPC调用的真正服务代码所运行的位置。其服务都是和媒体录播放有关,主要有三个服务:

  • AudioFlinger

声音的录播放服务,包括混音等

  • MediaPlayerService

提供媒体播放服务,opencore是这块的核心模块,对java端的接口在mediaplayer.java

  • CameraService

提供camera的录制、preview等功能的服务

AudioPolicyService

主要功能有检查输入输出设备的连接状态及系统的音频策略的切换等。

到此这篇关于Android系统服务概览的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android系统服务是如何获取的

    关于获取系统服务的猜想 Android获取系统服务一般都需要用getSystemService指定系统服务名称获取: val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager 在实际开发中,当我们需要编写提供某一业务流程处理的Manager,通常会实现为单例.那么上面那行代码背后发生了什么,为什么Android不使用单例模式呢?下面我们观察Android是如何设计获取系统服务的,它如何从应用侧到达系统侧. 可以思考一下,

  • 往Android系统中添加服务的方法教程

    前言 最近因为公司的平台要从Android 4.4.4 转战 Android 6.0, 带来的问题是之前我们在系统中添加了一些服务, 于是要将一些系统级的服务迁移过去,以及一些Framework 的自定义包. 碰巧在Gerrit上看到了添加系统服务这一块的patch.正好做个总结.虽然我不是Framework工程师, 但是了解Android系统还是很有好处的. 如何获取系统服务 我们获取系统服务都是在context中,getSystemService获取到的. 那么我们看一下getSystemS

  • Android 添加系统服务的方法详解

    一.前言 系统服务是Android中非常重要的一部分, 像ActivityManagerService, PackageManagerService, WindowManagerService, 这些系统服务都是Framework层的关键服务, 本篇文章主要讲一下如何基于Android源码添加一个系统服务的完整流程, 除了添加基本系统服务, 其中还包含添加JNI部分代码和App通过AIDL调用的演示Demo, 调用包含App调用服务端, 也包含服务端回调App, 也就是完成一个简单的双向通信.

  • Android中获得正在运行的程序和系统服务的方法

    ActivityManager.RunningAppProcessInfo类与获取正在运行的应用程序 每一个应用程序都会运行在它独立的进程里,但是为了节省资源或者这些应用程序是为了完成某一共同工作,它们 也可能会运行在一个进程里. 知识点介绍: ActivityManager.RunningAppProcessInfo类 说明: 封装了正在运行的进程信息 常用字段: int   pid    进程ID int   uid    进程所在的用户ID String   processName 进程名

  • Android系统服务概览

    System_Server进程 运行在system server进程中的服务比较多,这是整个android框架的基础 Native服务 SurfaceFlinger 这是framebuffer合成的服务,将各个应用程序及应用程序中的逻辑窗口图像数据(surface)合成到一个物理窗口中显示(framebuffer)的服务程序 Java服务: 这部分的服务大部分都有一个供应用进程使用的manager类,这就是一个RPC调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到sys

  • Android 系统服务TelecomService启动过程原理分析

    由于一直负责的是Android Telephony部分的开发工作,对于通信过程的上层部分Telecom服务以及UI都没有认真研究过.最近恰好碰到一个通话方面的问题,涉及到了Telecom部分,因而就花时间仔细研究了下相关的代码.这里做一个简单的总结.这篇文章,主要以下两个部分的内容: 什么是Telecom服务?其作用是什么? Telecom模块的启动与初始化过程: 接下来一篇文章,主要以实际通话过程为例,分析下telephony收到来电后如何将电话信息发送到Telecom模块以及Telecom是

  • Android App的运行环境及Android系统架构概览

    Android基于linux内核,面向移动终端的操作系统.主要包括以下几个方面: Application Framework: 这一层为应用开发者提供了丰富的应用编程接口,如 Activity Manager,Content Provider,Notification Manager,以及各种窗口 Widget 资源等.所有的APP都是运行在这一层之上. Dalvik 虚拟机: Dalvik VM采用寄存器架构,而不是JVM的栈架构,更适于移动设备.java源代码经过编译成为.class字节码文

  • Android 操作系统获取Root权限 原理详细解析

    android root权限破解分析 许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件"su",这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个"su"文件是不会给手机的软件或硬件造成任何故障. 下面的代码是android系统原版的

  • 浅谈Android系统的基本体系结构与内存管理优化

    Android运行环境一览 Android基于linux内核,面向移动终端的操作系统.主要包括以下几个方面: Application Framework: 这一层为应用开发者提供了丰富的应用编程接口,如 Activity Manager,Content Provider,Notification Manager,以及各种窗口 Widget 资源等.所有的APP都是运行在这一层之上. Dalvik 虚拟机: Dalvik VM采用寄存器架构,而不是JVM的栈架构,更适于移动设备.java源代码经过

  • Android开发之Android studio的安装与使用

    该专题的目的:学习Android studio的特性和技巧,学习Gradle的黑魔法,学习Android的最热框架,学习Android5.0以上的新特性. 该专题的行文顺序:从Android studio的特性和相关技巧以及在工作和学习中使用到的贴心插件和相关小魔法会一一介绍给大家,再根据项目的搭建,介绍给大家gradle的黑魔法,如何加速build过程,如何简单高效的使用gradle.之后,会根据项目的搭建,会向大家介绍Android的相关框架以及使用指南. 该专题的机器配置:Mac pro

  • Android中Binder详细学习心得

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解Android 卷Ⅰ,Ⅱ,Ⅲ>中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!另外,本系列文章知识可能需要有一定Android开发基础和项目经验的同学才能更好理解,也就是说该系列文章面向的是Android中高级开发工程师. 前言 上一次还不如不说去面试了呢,估计是挂了,数据结构与算

  • 详解Android系统启动过程

    计算机是如何启动的 计算机的硬件包括:CPU,内存,硬盘,显卡,显示器,键盘鼠标等输入输出设备.所有的软件都是存放在硬盘中,程序执行时,需要将程序从硬盘上读取到内存中,然后加载到CPU中来运行.当按下开机键时,内存中什么都没有,因此需要借助某种方式,将操作系统加载到内存中,而完成这项任务的就是BIOS. 引导阶段 BIOS:BIOS是主板芯片上的一个程序,计算机通电后,第一件事情就是读取BIOS. BIOS首先进行硬件检测,检查计算机硬件能否满足运行的基本条件.如果硬件出现问题,主板发出不同的蜂

  • 浅谈Android手机的抢红包插件

    前语 最近,Android手机上的手机管家更新了新版本,提供了红包闹钟功能,只要有微信红包或者QQ红包,就会自动提醒.恰逢最近又在做UI自动化的工作,使用到UI Automator框架.几行代码,就可以让手机自动完成某些操作,很有意思,今天就来扒一扒这背后的原理. UI Automator 传统的手工测试,我们需要点击一些控件元素,来查看输出的结果是否符合预期.比如在登录界面,输入正确的用户名和密码,点击登录按钮后,就可以正常登录. 如果这些操作,每一次都需要手工执行的话,是需要大量的人力成本的

随机推荐