




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、D02_d基於軟硬整合觀點撰写你的第一个核心服务(d)By 高煥堂 C层拥有控制点的必备表现是:1. 从C创建Java对象2. 从C调用Java层函数 步骤4.1: 此时,myActivity必须透过JNI Native函数去绑定核心服务,然后由JNI Native函数在Java层诞生一个BpBinder对象的分身:即BinderProxy对象。如下图: myActivity不宜含有native函数,于是委托sqr05来提供native函数,创建Java对象, 然后回传接口给myActivity。 在Android里,提供了一个JNI Native 模块, 内涵一个javaObjectForI
2、Binder()函数,它能协助诞生Java层的BinderProxy对象,做为BpBinder对象的分身。 撰写JNI Native模块/ sqr05.java/ public class sqr05static System.loadLibrary(SQRS05_jni); public native final IBinder bindCoreService();/* com_misoo_service_sqr05.cpp */.sp m_ib; JNIEXPORT jobject JNICALLJava_com_misoo_service_sqr05_bindCoreService(JN
3、IEnv *env, jobject thiz)LOGE(bindCoreService);sp sm = defaultServiceManager(); m_ib = sm-getService(String16(misoo.sqr); LOGE(SM:getService %pn,sm.get();if (m_ib = 0)LOGW(SQRService not published, waiting.);return 0;jobject jbi = javaObjectForIBinder(env, m_ib);if (jbi = 0)LOGE(javaObjectForIBinder
4、jbi = 0);return 0; return jbi; 由javaObjectForIBinder()诞生Java层的BinderProxy对象。 BinderProxy对象里的mObject属性指向BpBinder的IBinder接口。 JNI Native模块里的gBinderProxyOffsets.mObject公用属性存有BinderProxy类别里的mObject属性的ID 值(不是指针)。如下图: 于是,在从myActivity类别里,就能透过BinderProxy对象而调用JNI Native模块, 转而远距调用SQRService核心服务了。如下图: 撰写myActiv
5、ity/ myActivity.java/ndroid.os.IBinder;public class myActivity extends Activity implements OnClickListener private Button btn, btn2; Override/public void onClick(View v) switch(v.getId()case 101:sqr05 sqr = new sqr05();IBinder m_ib = sqr.bindCoreService(); int code = 0;Parcel data = Parcel.obtain();
6、 data.writeInt(11);Parcel reply = Parcel.obtain(); int flags = 0;try m_ib.transact(code, data, reply, flags); catch (Exception e) e.printStackTrace(); setTitle(Value = + String.valueOf(reply.readInt(); break;case 102:finish();break; myActivity执行到指令:sqr05 sqr = new sqr05();IBinder m_ib = sqr.bindCore
7、Service(); 就委托sqr05来调用Native的bindCoreService()函数:Java_com_misoo_service_sqr05_bindCoreService(JNIEnv*, jobject) 这bindCoreService()函数内含指令:sp sm = defaultServiceManager(); m_ib = sm-getService(String16(misoo.sqr); 于是,bindCoreService()函数绑定了SQRService核心服务。 再执行指令:jobjectjbi = javaObjectForIBinder(env, m_ib); 这bindCoreService()函数就诞生了Java层的BinderProxy对象。 最后执行到指令: return jbi; 这bindCoreService()函数就将BinderProxy对象的IBinder接口回传给myActivity类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买卖首付房子合同样本
- 代理卖房合同样本
- 水资源珍惜与公众参与计划
- 农村锅炉出租合同范例
- 急诊部门协同工作流程计划
- 企业废料收购合同标准文本
- 入职材料合同标准文本
- 借车位合同样本
- 供热工程劳务合同样本
- 货架管理与优化策略计划
- 三星堆文化遗迹中国风动态PPT
- DB44-T 2283-2021水利工程生态设计导则1-(高清现行)
- XX县城区新建公厕、生活垃圾中转站项目实施方案可行性研究报告
- 哈萨克斯坦铁路车站代码
- 利润分配专项审计
- 探索性数据分析简介课件
- 螺纹的标注-PPT课件
- 勇者斗恶龙之怪兽仙境图表资料合集(合成表技能)
- 履带式液压挖掘机挖掘机构设计
- 原材料进厂检验管理制度及检验规程
- 川崎病诊治指南最新ppt课件
评论
0/150
提交评论