版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、F01_a基於軟硬整合觀點观摩:Session模式与Proxy-Stub模式的搭配(a)By 高煥堂內容1. Session设计模式:以CameraService服务为例2. Session设计模式:以VM的JNIEnv对象为例3. Session设计模式:典型架构4. 复习:Proxy-Stub模式5. Proxy-Stub设计模式: 以CameraService为例6. SurfaceFlinger服务的Session模式7. SurfaceFlinger服务的Proxy-Stub模式基於軟硬整合觀點1、Session设计模式:以CameraService服务为例ServerBrowser
2、 #1Browser #2Browser #3Browser #1SessionionSesBrowser #2ServerSessionBrowser #3 以CameraService为例 在Android的C+层里,有个CameraService系统服务。 在MediaServer进程初始化照相机服务。 此进程的main()函数代码:int main(int argc, char* argv) sp proc(ProcessState:self();sp sm = defaultServiceManager();/ .CameraService:instantiate();/ .IPCT
3、hreadState:self()-joinThreadPool(); 这个CameraService:instantiate()的代码是:void CameraService:instantiate() defaultServiceManager()-addService(String16(media.camera), new CameraService(); 首先创建CameraService对象,然后委托SM(ServiceManager)登录到BD(Binder Driver)里。 当一个Camera应用程序启动时,会建立一个CameraClient来与CameraService衔接。
4、相当于:相当于: 当很多个应用程序来衔接CameraService时, 该如何接待呢? 采用Session设计模式 步骤一、CameraClient先调用CameraService,这个动作通称为:取得取得连线(Connection)。 此时,CameraService创建一个Client对象, 并将Client的IBinder接口回传给CameraClient。 步骤二、CameraClient就调用Client,要求Client与CameraService通信,间接调用到CameraService的服务。 当CemeraClient透过SM绑定了CameraService之后,Camera
5、就可调用CameraService的connect()函数来建立一个连线。 这时,CameraClient把自己的接口传递给CameraService。 例如下述的Android程序源码:sp CameraService:connect(const sp& cameraClient)Mutex:Autolock lock(mLock); sp client;if (mClient != 0) / 這個cameraClient已經調用過connect()了/ 先前已經給它一個Client對象(mClient)了/ 就先將mClient轉型態sp currentClient = mClient.p
6、romote();/ 這currentClient就是mClient if (currentClient != 0) spcurrentCameraClient( currentClien t-getCameraClient();/ 比對一下mClient所記錄的cameraClient與/ 本次來訪的cameraClient是否同一個if (cameraClient-asBinder()= currentCameraClient-asBinder() return currentClient;/ 如果同一個,回傳先前的Client對象 elsereturn client; elsemClient.clear();/ 這個cameraClient是第一次來訪/ 建立一個新Client對象client = new Client(this, cameraClient,IPCThreadState:self()-getCallingPid(); mClient = client;return client; 这时,CameraService就在自己进程里诞生了一个Client的对象。 并且,将此Client对象的接口回传给CameraClient。sp CameraService:connect( constsp& cameraClient)/ 那么,接口和接口,从那里来的呢? 定义在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSTEA 00012-2020九龙大白茶 白茶加工技术规范
- T/CSAE 506-2026汽车企业海外知识产权合规及风险防范指南
- T/SLA 004-2026儿童阅读推广服务指南
- T/SDJSXH 06-2024塔式起重机顶升安全监控系统
- T/ZBZLXH 012-2024高速公路收费运营区域化管理规范
- T/ZJSEE 0047-2025商业与公共建筑数字化节能控制技术规范
- T/UNP 550-2025加氢石油树脂
- T/SZSA 032-2024SMD塑料载带技术规范
- T/GDMDMA 0050-2025射频美容设备
- T/CSES 222-2025全国碳排放权交易市场 发电行业碳排放联合监测法(及应用规范)
- 【中小学】【学法指导】自习课主题班会-你真的会上自习课?【课件】
- 合租家具损坏赔偿协议范本二篇
- 重庆市城市建设发展有限公司招聘笔试题库2026
- 2026护理核心制度培训完整版
- DB21∕T 4374-2025 林业经营数表
- 心衰患者的监测指标解读
- 2026年天津市静海区初一地理上册月考考试试卷及答案
- 医疗费用知情同意书范本及注意点
- 四年级上册语文1-27课必背知识
- 2026国网江苏省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题附答案详解(考试直接用)
- GB/T 222-2025钢及合金成品化学成分允许偏差
评论
0/150
提交评论