当前位置: 首页 > news >正文

网站如何做视频链接地址广东做网站找谁

网站如何做视频链接地址,广东做网站找谁,轩与巧之歌wordpress,微网站二级页面怎么做前言 众所周知#xff0c;对于binder通信来说#xff0c;native层通信的基础架构是BpBinder/BBinder#xff0c;Java层的基础通信架构是BinderProxy/Binder#xff0c;这两者是如何统一起来的呢#xff1f; 正文 在binder的跨进程传递数据实现中#xff0c;数据是包裹在…前言 众所周知对于binder通信来说native层通信的基础架构是BpBinder/BBinderJava层的基础通信架构是BinderProxy/Binder这两者是如何统一起来的呢 正文 在binder的跨进程传递数据实现中数据是包裹在Parcel中的。具体的传递方式体现在Parcel类的两个方法writeStrongBinder()和readStrongBinder()中前者的功能是写入Binder对象后者的功能是读取Binder对象。同样Parcel在java层和native层各有一套。不过查看代码可知java层的Parcel只是native层的封装两者通过jni建立关联。 public final void writeStrongBinder(IBinder val){nativeWriteStrongBinder(mNativePtr, val);}public final IBinder readStrongBinder(){return nativeReadStrongBinder(mNativePtr);}private static native String nativeReadStrongBinder(long nativePtr);private static native void nativeWriteStrongBinder(long natievPtr, IBinder); 复制 jni层代码如下 static void android_os_Parcel_writeStrongBinder(JNIEnv* env, jclass clazz, jlong nativePtr, jobject object){Parcel* parcel reinterpret_castParcel*(nativePtr);if (parcel ! NULL){const status_t err parcel-writeStrongBinder(ibinderForJavaObject(env, object));if (err ! NO_ERROR){signalExceptionForError(env, clazz, err);}}}static jobject android_os_Parcel_readStrongBinder(JNIEnv* env, jclass clazz, jlong nativePtr){Parcel* parcel reinterpret_castParcel*(nativePtr);if (parcel ! NULL){return javaObjectForIBinder(env, parcel-readStrongBinder());}return NULL;} 复制 重点来了在jni层代码中发现了两个名字起的有点意思的函数ibinderForJavaObject()和javaObjectForIBinder()正是这两个函数将java层和native层统一了代码如下 spIBinder ibinderForJavaObject(JNIEnv* env, jobject obj){if (obj NULL) return NULL;//Instance of Binder?if (env-IsInstanceOf(obj, gBinderOffsets.mClass)){JavaBBinderHolder* jbh (JavaBBinderHolder*)env-GetLongField(obj, gBinderOffsets.mObject);return jbh-get(env, obj);}//Instance of BinderProxy?if (env-IsInstanceOf(obj, gBinderProxyOffsets.mClass)){return getBPNativeData(env, obj)-mObject;}return NULL;}jobject javaObjectForIBinder(JNIEnv* env, const spIBinder val){if (val NULL) return NULL;if (val-checkSubclass(gBinderOffsets)){//Its a JavaBBinder created by ibinderForJavaObjectjobject object static_castJavaBBinder*(val.get())-object();return object;}BinderProxyNativeData* nativeData new BinderProxyNativeData();nativeData-mOrgue new DeathRecipientList;nativeData-mObject val;jobject object env-CallStaticObjectMethod(gBinderProxyOffsets.mClass, gBinderProxyOffsets.mGetInstance, (jlong)nativeData, (jlong)val.get());...BinderProxyNativeData* actualNativeData getBPNativeData(env, object);if (actualNativeData nativeData){//Created a new Proxy...} else {delete nativeData;}return object;} 复制 ibinderForJavaObject()将java binder对象转换成native层binder对象javaObjectForIBinder()将native binder对象还原成java层binder对象。 总结 android在创建java层Binder对象和BinderProxy对象时会同时在native层创建对应的JavaBBinderHolder和BinderProxyNativeData。前者包含一个JavaBBinder类型的成员它继承自BBinder;后者包含BpBinder对象。这样就把java层和native层的连接建立起来了。 转自binder是如何在java层和native层实现统一的-腾讯云开发者社区-腾讯云
http://www.pierceye.com/news/533973/

相关文章:

  • 重庆网站空间黄骅港一期码头潮汐表
  • 推广网站如何做做酒店网站所用到的算法
  • 最好的网站建设组织wordpress 删除google
  • 生物科技 网站模板下载在线室内设计
  • 网站兼容性问题线上设计师接单
  • 外包网站平台可以做电算化的网站
  • 教育网站设计案例学校网站设计
  • 网站建设入门教程pdf网络推广和seo
  • 闲鱼钓鱼网站怎么做百度网页版主页
  • 一次备案多个网站alexa排名查询
  • 郑州做招商的网站网站建设的流程推广方案
  • wordpress手机网站插件海口seo关键词优化
  • wordpress随机文章佛山网站优化美姿姿seo
  • 做酒类网站中铁三局最新消息
  • 网站建设教程给赚湖南岚鸿官 网英语培训学校网站建设多少钱
  • 电子商务网站的建设步骤有注册咨询公司经营范围
  • 手机端网站做app开发wordpress建站论坛
  • 四合一做网站微信公众平台怎么做微网站
  • 法治与安全做讲座网站系统工具
  • wap网站怎么做白石洲网站建设
  • 网站备案 关闭网站广州安全教育平台登录入囗
  • 做常州美食网站首页的背景图招聘网站建设费用多少
  • 制作网站需要wordpress网站的建设步骤包括什么
  • 有什么网站可以做微信支付宝支付宝闽侯县建设局网站
  • html5网站图标qq刷赞网站如何做分站
  • 免费asp网站源码下载网页视频怎么下载到本地视频手机
  • 深圳网站定制开发安徽建设人才网官网
  • 斐讯k3做网站工商注册名称核准查询
  • 兼职网站编辑深圳网站做的好的公司哪家好
  • 网站响应速度优化wordpress外贸主题购买