版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东汕头市潮阳区棉北街道公益性岗位招聘8人备考题库附答案详解(夺分金卷)
- 2026河南郑州汽车工程职业学院高层次人才招聘35人备考题库带答案详解
- 2026年宁德市出入境边防检查站公开招聘协管员备考题库1人备考题库及答案详解(有一套)
- 2026四川眉山天府新区考核上半年招聘事业单位工作人员5人备考题库含答案详解
- 人力资源招聘与配置全程管理操作手册
- 财务管理规范与实务手册
- 2026北京航空航天大学宇航学院聘用编科研财务助理F岗招聘1人备考题库含答案详解(巩固)
- 2026贵州工贸职业学院春季学期马克思主义学院专任教师招聘3人备考题库及答案详解(全优)
- 抵制网络暴力,构建和谐校园小学主题班会课件
- 2026河南郑州汽车工程职业学院高层次人才招聘35人备考题库附答案详解(突破训练)
- 2026重庆黔江区公开选拔社区工作者49人考试备考试题及答案解析
- 精装修工程典型错误案例解析(可编辑版)
- 护理职业素养与人文关怀
- 2026年广东汕头市中考历史试卷含答案
- 检验科职业暴露应急预案演练脚本
- 2026年国家电网招聘《计算机类》题库综合试卷含答案详解【培优】
- 青年婚育意愿变迁及政策应对策略研究课题申报书
- 跨文化交际中的语境偏差-洞察与解读
- 派出所联防联控工作制度
- 焊工安全培训复审课件
- 武汉市汉阳区(2025年)辅警考试公安基础知识考试真题库及答案
评论
0/150
提交评论