`
a38876399
  • 浏览: 147854 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

android系统自带的Service原理与使用

阅读更多

1. 说明

  android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如 MountService监听是否有SD卡安装及移除,ClipboardService提供剪切板功能,PackageManagerService提 供软件包的安装移除及查看等等,应用程序可以通过系统提供的Manager接口来访问这些Service提供的数据,以下将说明他们的工具流程

 

2. 举例说明基本流程

  以android系统支持sensor(传感器)实例来说明框架层的service和manager是如何配合工作的

  1) 什么是sensor

  sensor是传感器, 比如控制横竖屏切换利用的就是重力传感器(gsensor), 还有accelerator sensor可取得x, y, z三个轴上的加速度(应用如平衡球, 小猴吃香蕉等)

  2) 应用程序调用(以下为关键代码)

  sensorManager=(SensorManager)getSystemService(context.SENSOR_SERVICE);

  lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

  sensorManager.registerListener(sensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);

      3) Manager层

  a) 提供给应用程序调用的接口,同实与Service交互,实现功能

  frameworks/base/core/java/android/hardware/SensorManager.java

  4) Service层

  a) 开机时就运行的管理Sensor的后台服务

  frameworks/base/services/java/com/android/server/SensorService.java

  b) snesor后台服务需要的JNI,通过它与系统级交互

  frameworks/base/services/jni/com_android_server_SensorService.cpp

  5) 系统层

  a) 传感器的头文件,硬件提供商按此文件的定义实现其功能

  hardware/libhardware/include/hardware/sensors.h

  b) 传感器的系统层实现,与内核交互,此处通常是硬件提供商提供的

  hareware/libsensors

  6) 内核及硬件层

  内核访问硬件,同时以设备文件等方式提供给上层控制接口和传感器数据

 

3. 系统层实现

  1) frameworks/base/core/java/android/*Manager.java 对应用的接口

  2) frameworks/base/core/jni/ 对应用的接口的JNI

  3) frameworks/base/services/java/com/android/server/ 后台服务

      4) frameworks/base/services/jni/ JNI与系统层接口

  5) hardware/libhardware/include/ 系统层头文件

  6) hardware/libxxx 系统库支持

  7) 内核支持

 

4. 应用程序如何使用

  1) 查看系统提供哪些服务

  find frameworks/base/core/java/android/ -name *Manager.java

  此处可以看到调用系统提供服务的入口

  2) 一般register listener,事件发生时都收到回调

 

5. 新建一个service(以froyo为例)

  1) 接口:接口供应用调用

  frameworks/base/core/java/android/app/ContextImpl.java 加服务名与Manager对应

  frameworks/base/core/java/android/content/Context.java 加服务名定义

  2) Manager:提供服务对应的调用接口

  frameworks/base/core/java/android/app/StartXXXXManager.java 实现调用接口

  frameworks/base/core/java/android/app/IXXXXManager.aidl 定义调用接口

  frameworks/base/Android.mk 加入aidl的编译

  3) service:提供后台服务支持

  frameworks/base/services/java/com/android/server/XXXXService.java 服务实现

  frameworks/base/services/java/com/android/server/SystemServer.java 启动服务

 

 

摘自:http://yueguc.iteye.com/blog/775339

 

分享到:
评论

相关推荐

    android系统自带闹钟源码

    这里我们将深入探讨“android系统自带闹钟源码”中的关键知识点,以帮助理解其工作原理,并从中学习如何优化和扩展相关功能。 1. **AlarmManager服务**:AlarmManager是Android系统提供的一种用于调度定时任务的...

    安卓Android源码——系统原理与开 发要点详解_培训课件.rar

    《安卓Android源码——系统原理与开发要点详解》是一份深度剖析Android操作系统的培训资料,旨在帮助开发者深入了解Android系统的内部工作原理以及优化开发流程。这份资料涵盖了从Android系统的架构到具体开发实践的...

    Android系统自带摄像头源码

    这份源码包含了Android操作系统如何与硬件接口交互,如何处理图像数据,以及如何提供用户界面来控制相机功能。 在Android系统中,相机服务是一个系统级服务,名为`CameraService`,它位于`frameworks/base/services...

    android系统原理及开发要点详解

     第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。  第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...

    安卓9.0系统自带settings系统设置apk源码

    这个"安卓9.0系统自带settings系统设置apk源码"提供了深入理解Android系统设置实现的绝佳机会。Android 9.0,也被称为Pie(馅饼),是Android操作系统的一个重大更新,引入了许多新功能和性能改进。下面将详细介绍这...

    Android 自带应用蓝牙源代码

    本资源"Android 自带应用蓝牙源代码"提供了Android系统内置蓝牙应用的原始代码,让我们有机会深入理解其工作原理和实现细节。 首先,蓝牙源代码会涵盖以下几个关键部分: 1. **BluetoothAdapter**: 这是Android ...

    Android2.2自带apk安装器源码

    总的来说,深入研究`Android2.2自带apk安装器源码`能够为开发者提供宝贵的见解,帮助他们更好地理解Android系统的底层工作原理,提升应用程序的开发和维护能力。同时,这也是一个很好的机会去学习如何遵循Android...

    Android 官方SDK文档 Service

    #### 四、Service的创建与使用 - **创建Service类**:首先需要定义一个继承自`Service`的类,并重写必要的方法,比如`onCreate()`、`onStartCommand()`、`onBind()`等。 - **声明Service**:在`AndroidManifest.xml...

    Android高级应用源码-android2.3.1系统自带联系人应用源码.rar

    本篇将深入探讨Android 2.3.1版本中自带的联系人应用源码,帮助开发者了解其背后的实现原理,提升自己的Android应用开发能力。 一、整体架构 Android 2.3.1系统中的联系人应用源码,主要由四大模块组成:数据存储...

    android自带闹钟源码

    在这个项目中,我们将深入探讨Android自带闹钟程序的源码,了解其工作原理和实现细节。 首先,让我们从整体结构上来看这个源码。"AlarmClock"通常包含多个组件,如Activity、Service、BroadcastReceiver以及相关...

    android 4.4 系统源码

    Android 4.4系统源码是开发者深入了解Android操作系统工作原理的重要资源,对于系统级开发者、应用开发者以及希望优化性能或定制系统的爱好者来说,都是不可或缺的学习资料。这份源码包含了从底层驱动到上层应用程序...

    Android 自带应用录音SoundRecorder源代码

    8. **服务(Service)**:为了在后台持续录音,SoundRecorder可能使用了Android的`Service`组件。服务可以在用户界面关闭后继续运行,使得录音可以不受用户界面交互的影响。 9. **通知(Notifications)**:当录音在...

    android 短信源码

    本文将深入解析"android短信源码",主要关注Android系统自带的MMS( Multimedia Messaging Service,多媒体信息服务)应用的实现。在这个名为`platform_packages_apps_mms-master`的压缩包文件中,包含了完整的MMS...

    mooc_android_lesson16_Service音乐播放器

    本课程"mooc_android_lesson16_Service音乐播放器"聚焦于如何利用Service来实现一个简单的音乐播放器,让学生深入理解Service的工作原理以及如何与UI交互。 首先,我们来看一下如何通过Button进行界面布局。在...

    安卓Android源码——远程视频监控程序源码.zip

    开发者可能使用了OkHttp、Volley等网络库进行数据传输,或者直接使用了Android自带的HttpURLConnection。此外,为了实现实时流媒体,可能还会使用到如FFmpeg这样的库进行编解码处理。 接着,视频的播放功能可能会...

    android 自带案例

    每次Android系统更新都会带来新的API和特性,samples会及时跟进,提供这些新功能的使用示例,如Material Design、AndroidX库、Kotlin语言支持等,让开发者能够快速适应并利用最新的Android技术。 总结来说,...

    安卓Android源码——KickFlyBug2.zip

    总之,"安卓Android源码——KickFlyBug2.zip" 提供了一个探索和学习Android系统的机会,无论是对新手还是经验丰富的开发者,都能从中获益。通过理解和修改源码,开发者能够更有效地解决问题,创造出更加出色的应用...

    android自带下载工具DownloadManager示例demo

    以上就是使用Android自带下载工具DownloadManager的基本流程。通过DownloadManager,你可以实现后台下载,即使用户离开应用,下载任务也会继续进行,极大地提高了用户体验。同时,它还支持断点续传和自动重试,确保...

    Android 自带语音识别功能

    本文将深入探讨Android自带的语音识别功能,解析其背后的原理和技术细节。 首先,Android的语音识别主要依赖于Google语音服务(Google Speech Recognition Service),这是一个云端服务,能够将用户的语音转化为...

    基于Android自带的bctest.c来实现简单的Binder应用程序的Demo.pdf

    在深入探讨基于Android自带的bctest.c来实现简单Binder应用程序的Demo时,我们首先需要了解Android系统中Binder通信机制的基本概念和工作原理。Binder是Android系统中用于进程间通信(IPC)的一种机制,它使得不同...

Global site tag (gtag.js) - Google Analytics