打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IBinder机制之

IBinder机制之--认识Android环境里的两种Service(转)

在Android平台里,上层应用程式的service与底层的系统service有很大的区别,只是许多人都将它们混在一起了。例如,在Android里著名的MediaPlayer范例,许多人都知道其结构为:

     图1

 


其中有两个service:

l   应用程式开发者所写的myPlayerService.java类别。这是属于一般所称的SDK service。

l   Android已经提供的MediaPlayerService.cpp类别。这是属于一般所称的系统service。

 

     主要的系统service都是在Android系统启动时,就会先逐一登记到BD(Binder Driver)里,随时准备为SDK应用程式进行服务。

    天字第一号的系统service就是ServiceManager。当Android系统启动时,就会优先将之登记到BD(Binder Driver)里,如下图:

        图2

让其它组件能透过IBinder介面(可转型为IServiceManager介面)而远距呼叫ServiceManager的服务。于是陆续会有更多的系统service呼叫ServiceManager的addService()函数而登记到BD里成为可远距呼叫的系统service。例如,基于上述途径,ActivityManagerService就会登记为可远距呼叫的系统service。再如,MediaPlayerService也继续登记为基本的系统service,于是ActivityManagerService和MediaPlayerService也都具有IBinder介面了,如下图:

 

        图3

 


当Android系统启动完成之后,就可以执行应用程式了。

     执行应用程式时,就由ActivityManagerService来将SDK service(如myPlayerService.java类别)登记到Binder Driver里,于是应用程式里的Activity等类别就能使用bindService()函数来系结(bind)到myPlayerService,然后透过IBinder介面而远程呼叫到myPlayerService.java。之后,myPlayerService再透过图1的结构而呼叫到MediaPlayerService,进而呼叫到OpenCode组件,就播放出好听的MP3音乐了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
認識Android環境裡的兩種Service--Android大舞台 文章講義分享 --G...
Android深入浅出之Binder机制 - innost - 博客园
Binder基本概念流程学习
02. Android Binder图解 小米系统专家 解析 ServiceManager和binder通信 (安卓12)
Android 系统启动
Android的BUG(三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服