Android单独的服务App,part_d_开发自己的服务从app到平台开发d01_a_认识android核心服务_ok...

1、D01_a认识Android基核於軟硬心整合服觀點务(a)By 高煥堂內容1. 区分核心服务与App服务2. 回忆App服务3. 区分两种核心服务:Android Service与Native Service4. 核心服务的特性5. 简介几个Android Service6. 简介几个Native Service7. 天一号的核心服务: ServiceManager8. 核心服务的共通API:IBinder接口9. BBinder基类实现IBinder接口1、区分核心服务基与於軟硬A整p合觀p點服务在Android平台,上层App的SDK-based Service与底层的核心服务有很大的区别。

2、, 只是许多人都将它们混在一起了。 于此,兹说明Android里有2种服务:1. 应用层的应用服务,通称为SDK-based Service(或称为App服务)。2. 系统层的核心服务,通称为Core Service(或称为System Service)。 至于App服务(即SDK-based Service)则属于App的一部份,是开机完成后,用户加载并开启某App时,才会启动该App里的服 务。这种App服务的特征是,它会定义成为Service的一个子类别。 如下图的myService子类别,它继承Android应用框架里的Service基类。(SDK-based 服務)JNI(核心服務)。

3、Binder DriverOpenCodeMediaPlayerServiceMediaPlayer.cppMediaPlayer.javamyService.javaService.java 在Android开机过程中,就会启动数十个核心服务。当开机完成时,全部核心服务也都启动完成了。 接着,才能启动App,并执行之。所以, 核心服务的启动时间早于App的启动时间。Linux Kernel + Drivers + HWLinux Kernel + Drivers + HWInit進程(讀取init.rc)Linux Kernel + Drivers + HWRuntimeInit進程(讀取i。

4、nit.rc)Linux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)ZygoteZygoteVMLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)ZygoteZygoteVMServiceManagerLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)ZygoteZygoteVMServiceManagerAndroid Service (Java)Native Service (C+)System ServerLinux Kernel + D。

5、rivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerAndroid Service (Java)Native Service (C+)System ServerAudioFlinger MediaPlayerService CameraServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerAndroid S。

6、ervice (Java)Native Service (C+)System ServerActivityManagerService WindowManagerServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerAndroid Service (Java)Native Service (C+)System ServerAMS(ActivityManagerService)启动一个App的时候,就会通过Socket请求Zygo。

7、te来fork一个进程给这个即将要启动的App。forkFork ServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem ServerforkLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem ServerLinux Kernel + Drivers。

8、 + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem Server 也就是说,当App服务启动时,核心服务早已经启动存在了。 因此,myService可以透过MediaPlayer和JNI来绑定(Bind)和调用核心服务MediaPlayerService。(SDK-based 服務)JNI(核心服務)Binder DriverOpenCodeMediaPlayerServiceMediaPlayer.cppMediaPlayer.javamyService.javaSe。

9、rvice.java 其中的myService就是一个App服务;而MediaPlayerService就是一个核心服务。到此,已经初步介绍了核心服务的特性, 让你能对分辨核心服务和App服务的微妙区别了。IBinderMediaPlayerServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem ServerIBinderMediaPlayerServiceLinux Kernel + Drivers + HWRun。

10、timeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem ServerVMmyService.javaService.javaIBinderMediaPlayerServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem ServerVMmyService.javaService.java2、回忆A基於p軟硬p整服合觀。

11、點务 核心服务是系统层的前装型服务 大多以C+类别实现,有些以Java类别实现。 可透过ServiceManager来建立和绑定(Bind)核心服务。 绑定后,可透过IBinder接口去执行其函数。 App服务是应用层的后装型服务 以Java层的Service的应用子类别实现。所有的App服务都是由ActivityManagerService核心服务所掌管。 在应用层(如Activity)可调用Android框架里Context类别的startService()和bindService()函数去绑定App服务。 绑定后,可透过IBinder接口去执行其函数。IBinderMediaPlayerServiceLinux Kernel + Drivers + HWRuntimeInit進程(讀取init.rc)MediaServerZygoteZygoteVMServiceManagerSurfaceFlingerSystem Server Continued。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值