所谓Android的核心服务主要包括熵服务(Entropy Service)、电源管理器(Power Manager)、Activity管理器(Activity Manager)、通话寄存器(Telephony Registry)、包管理器(Package Manager)、账户管理器(Account Manager)、内容管理器(Content Manager)、内容提供器(System Content Providers)、电池服务(Battery Service)、光线服务(Lights Service)、振动服务(Vibrator Service)、闹钟管理器(Alarm Manager)、看门狗(Init Watchdog)、窗口管理器(Window Manager)、蓝牙服务(Bluetooth Service)等。这些服务和应用程序密切相关,但通常应用程序不能直接接入核心服务。早期版本中的硬件服务(Hardware Service)和传感器服务(Sensor Service)已经被移除,光线服务和振动服务在核心服务通过系统服务器来启动。系统服务器的实现位于SystemServer.java中。

1.熵服务
熵服务主要负责在开关机时加载和保持Linux内核的熵池数据。附加的熵池数据包括:序列号(serial no)、启动模式(boot
mode)、基带(base
band)、运营商(carrier)、引导加载器(bootloader)、硬件(hardware)、版本(revision)、当前时间(微妙)、
当前时间戳(纳秒),熵服务的实现位于EntropyService.java文件中。
在应用层,熵池数据可以通过Build对象获取,方法如下:
    Build. MODEL //产品名
        Build. MANUFACTURER //设备制造商
        android.os.Build.VERSION.SDK // SDK版本如“9”
更详细的信息可以参考build.java和DeviceInfoSettings.java等。

2.电源管理器

电源管理器主要负责系统的电源管理策略,如键盘灯、LCD背光、按钮等,相关的实现位于PowerManagerService.java文件中。具体的
策略分为SCREEN_OFF、SCREEN_DIM、SCREEN_BRIGHT、SCREEN_BUTTON_BRIGHT、ALL_BRIGHT、
LIGHTS_MASK等几个等级。

3.Activity管理器

基于栈来管理应用程序的生命周期,方便用户在不同的Activity间切换。Activity管理器的实现位于
ActivityManagerService.java文件中。在启动Activity管理器后,还应为其安装系统内容提供器(System
Content Providers)、添加看门狗等。

4.通话寄存器
管理与通话相关的内容。通话寄存器的实现位于TelephonyRegistry.java文件中。

5.包管理器
对安装包进行管理,可以执行安装、卸载、激活、去活、查看包权限等操作。包管理器的用法为pm [list|path|install|uninstall]。
执行的脚本为:/system/bin/pm。脚本内容如下:
        base=/system
        export CLASSPATH=$base/framework/pm.jar
        exec app_process $base/bin com.android.commands.pm.Pm "$@"
包管理器的实现位于PackageManagerService.java文件中。

6.账户管理器
所谓的账户管理器(Account Manager)即对设备上应用账户的账户名、密码、鉴权等进行管理,账户管理器的实现位于AccountManagerService.java文件中。

7.内容管理器
内容管理器主要在应用程序间访问、分享数据。如其他应用程序可以去存取电话簿中的联系人资料等。内容管理器的实现位于ContentService.java文件中。

8.电池服务
电池服务主要负责管理电池的充电状况、电池的电力水平等。相关的实现位于BatteryService.java文件中。

9.光线服务
所谓的光线服务主要包括LCD背光、按钮背光、键盘灯等。相关的实现位于LightsService.java文件中。

10.振动服务
所谓振动服务即对马达的控制,相关的实现位于VibratorService.java文件中。

11.闹钟管理器
闹钟管理器主要负责闹钟的唤醒、取消,以及闹钟列表的管理等,相关的实现位于AlarmManagerService.java文件中。

12.窗口管理器
管理窗口系统。窗口管理器的实现位于WindowManagerService.java文件中。这是Android的UI框架最重要的部分。窗口类型包括Activity、Dialog、PopupWindow等。实际的控制通过WindowToken进行。

13.蓝牙服务

Android对蓝牙协议提供了支持,相关的上层代码实现在android.bluetooth包中,主要的类包括android.bluetooth.
BluetoothAdapter、android.bluetooth. BluetoothDevice、android.
bluetooth. BluetoothSocket、android.bluetooth.
BluetoothServerSocket、android.bluetooth.
BluetoothClass等。为扫描、连接蓝牙设备,基于蓝牙设备的文件传输等提供了便利。蓝牙的上层代码主要位于frameworks\base
\core\java\android\bluetooth目录下。目前Android支持的蓝牙标准为BT
2.1,采用的蓝牙协议栈为著名的开源蓝牙协议栈BlueZ。如果是在模拟器上运行,蓝牙服务不启动。

在核心服务之外,Android还为用户提供了如设备策略管理服务(Device Policy Manager
Service)、状态栏服务(Status Bar Service)、剪贴板服务(Clipboard
Service)、输入法服务(InputMethod Service)、网络状态服务(NetStat
Service)、网络管理服务(NetworkManagement Service)、连接服务(Connectivity
Service)、喉服务(Throttle Service)、接入管理器(Accessibility Manager)、挂载服务(Mount
Service)、通知管理器(Notification Manager)、挂载服务(Mount Service)、存储监控器(Device
Storage Monitor)、位置管理器(Location Manager)、搜索管理器(Search
Manager)、DropBox服务(DropBox Service)、桌面服务(Wallpaper Service)、音频服务(Audio
Service)、耳机观察器(Headset Observer)、Dock观察器(Dock Observer)、USB观察器(USB
Observer)、UI模式管理服务(UI Mode Manager Service)、备份服务(Backup
Service)、AppWidget服务(AppWidget Service)、识别服务(Recognition
Service)、DiskStats服务(DiskStats Service)等。(摘自苗忠良-《Android多媒体编程从初学到精通》)

Android 自学之核心服务的更多相关文章

  1. 【Android自学之旅】 Android开发环境的搭建

    [Android自学之旅] Android开发环境的搭建 搭建参考教程: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-do ...

  2. 【Android自学之旅】 目录

    [Android自学之旅] 目录 [Android自学之旅] Android开发环境的搭建

  3. Android 自学之画廊视图(Gallery)功能和用法

    Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...

  4. Android自学笔记:Git下载源代码

    Info:做J2ME几年了,现在基本没有公司用了,是时候向Android领域进军了. 自学中,难免会有疏漏,有问题请及时提出,共同学习共同进步. 2014-10-13:初版 2014-10-14:添加 ...

  5. Android自学指导

    如果想自学Android,以下的文章可以作为参考: 如何自学Android(Gityuan) 那两年炼就的Android内功修养(老罗的Android之旅)

  6. Android自学笔记:环境配置

    Info: 自学Android之旅第二篇,初步学习会有疏漏,以后我会不断修改补全,直到完美. 2014-10-09:初版 2014-11-12: 重新配置了一台电脑,更新在学习robotium过程中, ...

  7. Android 自学之选项卡TabHost

    选项卡(TabHost)是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组建摆放区域.通过这种方式,就可以在一个容器中放置更多组件 ...

  8. 疯狂安卓Android自学笔记

    开发者必备自学工具: 谷歌搜索:www.yundou.info Android原版开发文档 (英文) Doc http://www.phoned.cn/docs/reference/android/v ...

  9. Android自学学习资料

    最近在自学Android编程,在网上看了一些博客和视频教程,觉得比较好的分享一下,继续学习,gangbade~ 国外android官网总是出现连不上的情况,如果你不想FQ的话,这里github上可以直 ...

随机推荐

  1. 从一个开发的角度看负载均衡和LVS(转)

    原文:http://blog.hesey.net/2013/02/introduce-to-load-balance-and-lvs-briefly.html 在大规模互联网应用中,负载均衡设备是必不 ...

  2. iOS 8版本信息与屏幕尺寸

    原文  http://www.cnblogs.com/smileEvday/p/iOS8.html   1.UIWindow的bounds iOS 7之前Window的bounds不会随着方向而变化, ...

  3. 定义文档兼容性,让IE按指定的版本解析我们的页面

    作为开发人员,特别是作为Web的前端开发人员 ,最悲催的莫过于要不断的,不断的去调试各种浏览器的显示效果,而这其中最让人头痛的莫过于MS下的IE系列浏览器,在IE系列中的调试我们将会发现没有一个是好伺 ...

  4. 初学Android 二 创建项目以及目录结构

    命令行创建 android create project Usage: android [global options] create project [action options] Global ...

  5. HttpWebRequest和HttpWebResponse用法小结

    http://www.cnblogs.com/willpan/archive/2011/09/26/2176475.html http://www.cnblogs.com/lip0121/p/4539 ...

  6. OpenStack official programs

    What are programs ? The OpenStack project mission is to produce the ubiquitous Open Source Cloud Com ...

  7. flash的dragonbone插件导入cocos2d的注意事项

    一:Flash版本号应该为CS 6.0,低版本号不提供支持 二:新建flash项目的时候应该选择ActionScript3.0 三:动画中仅仅有两种元素,一个是"元件",还有一个是 ...

  8. 脚本命令高级Bash脚本编程指南(31):数学计算命令

    题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...

  9. 【M26】限制某个class所能产生的对象数量

    1.每当产生一个对象,必定调用构造方法.因此,禁止产生对象的做法就是,将所有的构造方法声明为private. 2.只有在类的内部才可以访问private成员,有两层含义:在类的内部可以访问this的p ...

  10. TFS 图标意思

    小人:文件被其他人签出 对号:文件被自己签出 锁: 文件已经被签入 加号:新增加一个文件