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

郑州网站推广公司服务用WordPress配置cms

郑州网站推广公司服务,用WordPress配置cms,钉子wordpress主题,哪个不是常用的网页制作工具在android代码中#xff0c;经常可以看到native方法#xff0c;需要查看其对应的C方法#xff0c;这些方法是一一对应的#xff0c;对应关系是在jni注册里关联起来的。 比较直观的是这样的例子#xff0c; Parcel.java //Java层的方法里调用了native方法nativeWriteInt… 在android代码中经常可以看到native方法需要查看其对应的C方法这些方法是一一对应的对应关系是在jni注册里关联起来的。 比较直观的是这样的例子 Parcel.java //Java层的方法里调用了native方法nativeWriteInt(mNativePtr, val) public final void writeInt(int val) { nativeWriteInt(mNativePtr, val); } //Java层中声明了native方法 private static native void nativeWriteInt(long nativePtr, int val); private static native void nativeWriteLong(long nativePtr, long val); 以 nativeWriteInt方法为例进而会调用到frameworks/base/core/jni/android_os_Parcel.cpp中的android_os_Parcel_writeInt方法。 搜nativeWriteInt可以看到{nativeWriteInt,            !(JI)V, (void*)android_os_Parcel_writeInt} 以{nativeWriteInt,            !(JI)V, (void*)android_os_Parcel_writeInt}为例 nativeWriteInt是Java层Parcel.java中声明的函数名称而android_os_Parcel_writeInt是JNI层android_os_Parcel.cpp中对应的函数。 !(JI)V是函数签名对函数的参数和返回值进行标记采用了函数签名即便是重载了的同名函数都可以通过函数签名来进行区分。 通过这样的映射处理Java层就和Native层关联起来了。 通过RegisterMethodsOrDie(env, kParcelPathName, gParcelMethods, NELEM(gParcelMethods))调用最终来实现了JNI方法的关联。android.os.Parcel类中的nativeWriteInt方法对应着android_os_Parcel.cpp中的static void android_os_Parcel_writeInt(JNIEnv* env, jclass clazz, jlong nativePtr, jint val)方法。 static void android_os_Parcel_writeInt(JNIEnv* env, jclass clazz, jlong nativePtr, jint val) { Parcel* parcel reinterpret_castParcel*(nativePtr); if (parcel ! NULL) { const status_t err parcel-writeInt32(val); if (err ! NO_ERROR) { signalExceptionForError(env, clazz, err); } } } android_os_Parcel_writeInt方法中又调用了C层的Parcel类进而通过JNI实现了Java层对C层方法的调用。 gParcelMethods是JNINativeMethod类型的数组存储了Java层函数和native函数的映射关系。 还有一种不太直观的描述 比如libcore/ojluni/src/main/java/java/net/NetworkInterface.java 里的 393 private static NetworkInterface[] getAll() throws SocketException { 394 // Group Ifaddrs by interface name. 395 MapString, ListStructIfaddrs inetMap new HashMap(); 396 397 StructIfaddrs[] ifaddrs; 398 try { 399 ifaddrs Libcore.os.getifaddrs(); 400 } catch (ErrnoException e) { 401 throw e.rethrowAsSocketException(); 402 } 这里查找getifaddrs方法的实现找到Libcore.java 继续找到libcore/luni/src/main/java/libcore/io/Linux.java public native StructIfaddrs[] getifaddrs() throws ErrnoException; 是个native方法具体的实现是哪里呢 可以搜到 libcore/luni/src/main/native/libcore_io_Linux.cpp NATIVE_METHOD(Linux, getifaddrs, ()[Landroid/system/StructIfaddrs;), 这个跟上面的不一样看不出来对应的方法 原来NATIVE_METHOD是个宏 在libnativehelper/include/nativehelper/JniConstants.h 里有  82#define NATIVE_METHOD(className, functionName, signature) \ 83 { #functionName, signature, reinterpret_castvoid*(className ## _ ## functionName) } 这个宏里进行了字符串拼接展开这个宏 { getifaddrs, ()[Landroid/system/StructIfaddrs;, reinterpret_castvoid*(Linux_getifaddrs) } 所以是Linux_getifaddrs方法 1517static jobjectArray Linux_getifaddrs(JNIEnv* env, jobject) { 1518 static jmethodID ctor env-GetMethodID(JniConstants::structIfaddrs, init, 1519 (Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V); 1520 if (ctor NULL) { 1521 return NULL;
http://www.hkea.cn/news/14560288/

相关文章:

  • 电子商务网站建设的步骤一般为如何进行网页设计和网站制作
  • 网站开发天晟合益工程建设招投标网站
  • 郑州做网站找绝唯科技网站建设与网页设计案例教程pdf下载
  • 东莞公司网络营销公司百度seo搜索引擎优化厂家
  • 网站后台打开很慢建设银网官方网站
  • 做室内装修设计的网站重庆建设工程信息网打不开咋回事
  • 校园网站建设意见表填写海淀团队组建网站
  • wordpress仿站教程2016完整企业网站模板
  • 做ppt模板的网站wordpress视频大小自由适配屏幕
  • 自己怎么做网站链接深圳建设项目信息网
  • 网站空间商推荐手机微网站尺寸
  • 大连网站建设培训班yellow高清免费观看在线
  • 二级域名查询网站义乌小程序开发
  • 免费建网站 步骤金湖网站建设
  • 连云港做网站设计本墨陈黑做网站有版权
  • 有没有做微信的动态图网站室内设计联盟模型下载
  • 珠海网站建设q.479185700強微信网站后期运营怎么做
  • 长沙网页制作模板的网站wordpress 医院模板下载
  • 爱站工具包官网做二手钢结构网站
  • 购物网站开发的业务需求分析国外优秀海报设计网站
  • qq空间秒赞秒评网站推广上海昆山网站公司哪家好
  • 网站优化网站建设公司服务器怎么建网站
  • 滨海做网站价格html企业网站怎么做
  • 电子商务作业做网站网站备案证书下载不了
  • 工商年报网上申报系统官网陕西网站建设优化建站
  • 如何做设计网站页面设计汕头建设局网站
  • 瓷器网站怎么做江阴网站建设公司
  • 网站页面布局设计wordpress子站点
  • 贵州微网站建设公司福州网站提升排名
  • 苏州网站建设找苏州聚尚网络推荐网站设计好学吗