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

网站优化中友情链接怎么做滨州淘宝网站建设

网站优化中友情链接怎么做,滨州淘宝网站建设,偷的网站怎么做seo,那个网站开发三味本文将带你了解Android应用开发Android JNI-c/c调用java方法#xff0c;希望本文对大家学Android有所帮助。Android JNI-c/c调用java方法#xff0c;在使用ndk开发的时候#xff0c;java调用c/c方法是必须要的。但是很多时候#xff0c;c/c有callback需要反馈给jav…本文将带你了解Android应用开发Android JNI-c/c调用java方法希望本文对大家学Android有所帮助。Android   JNI-c/c调用java方法在使用ndk开发的时候java调用c/c方法是必须要的。但是很多时候c/c有callback需要反馈给java的时候(比如IM通讯登录成功信息和一些异常信息)就需要c/c调用java方法了。在看这篇文章之前必须对JNI有一些基础的了解比如java调用c/c方法java和c/c   jni在一些基本类型上的对应(int对应jint等)。那么现在介绍一下c/c调用java方法的基本步骤1.需要把java方法所在类的实例通过JNI方法传到c/cjava:JNI, 这是c需要回调的java方法然后通过调用自身init()方法把java实例传到c层?123456class JNI {public native void init(JNI obj);public void error(int code) {Log.i(JNI, c call error   );}}c:这里把java传递进来的objListener保存到c的jniobj结构体内。?123456789101112131415161718192021222324JNIEXPORT jint JNICALL Java_com_arcvideo_rtcmessage_JNI_init(JNIEnv *env,jobject oj,jobject objListener,){if(objListener MNull){MVLOG(objListener is null);}else{MVLOG(get   java obj);jniobj-g_obj   env-NewGlobalRef(objListener);}return res;}typedef struct _tagJNIObj{//这个是刚才保存java实例的结构体在还有其他参数jmethodID JNI_error;JavaVM* g_jvm;JNIEnv* g_ThreadEnv;jclass g_class;jobject g_obj;MHandle g_h;}JNIObj;static JNIObj* jniobj MNull;2.在c层拿到java classc:通过jni提供的FindClass方法和完整类名可以拿到class引用?12static const char* const DL_CLASS_NAME   com/arcvideo/rtcmessage/JNI;jniobj-g_class env-FindClass(DL_CLASS_NAME);3.在c层拿到java methodc:根据刚才拿到的java class引用有jni提供的GetMethodID方法和方法名入参就可以拿到method引用?123456// errorjniobj-JNI_error   env-GetMethodID(jniobj-g_class, error,(I)V);if(jniobj-JNI_error   MNull){MVLOG(create   JNI_error is error);}4.调用methodc:在需要调用的地方调用这个java方法?1234567891011121314151617181920212223242526static void error(MDWord code, MVoid* pObj){MVLOG(RtcMessageJNI   error is in code : %d, code );if(jniobj-g_ThreadEnv   MNull){MVLOG(attach   current thread start);jniobj-g_jvm -   AttachCurrentThread(jniobj-g_ThreadEnv, MNull);if(jniobj-g_ThreadEnv   MNull){MVLOG(attach   current thread is error);return;}}if(jniobj   jniobj-JNI_error){MVLOG(RtcMessageJNI error is called);//这里是最关键的调用过程通过JNI提供的CallVoidMethod来调用加入参数class引用method应用已经入参这样调用java方法就完成了。jniobj-g_ThreadEnv-CallVoidMethod(jniobj-g_obj,   jniobj-JNI_error,(int)code);}if(jniobj-g_jvm){MVLOG(RtcMessageJNI error method   detach);jniobj-g_jvm-DetachCurrentThread();jniobj-g_ThreadEnv   MNull;}}这里在调用java方法的时候调用了AttachCurrentThread和DetachCurrentThread方法这是必须的如果不调用AttachCurrentThread就拿不到线程的引用会报错误。然后在调用结束的时候要调用DetachCurrentThread也就是释放线程。根据个人经验最好每次调用java方法结束的时候都调用DetachCurrentThread这样基本不会出错。本文由职坐标整理并发布希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道
http://www.yutouwan.com/news/97899/

相关文章:

  • 网站图片什么格式建网站 xyz
  • 无锡网站seo外包怎么将网站关键词排名首页
  • 旅游网站的建设做柜子网站
  • 做网站还需要买空间吗抖音代运营合同文件
  • 公司的服务器能建设网站吗潍坊自动seo
  • 网站分享链接怎么做做警员编号网站
  • 数据库作业代做网站开发者大会
  • 微信优惠群怎么做网站软文范例100字以内
  • 做网站备案需要哪些材料洛阳网站公司
  • 永久免费建站空间怎么设计海报图片
  • 个体户做网站有用吗免费小程序制作平台
  • 购物网站开发模板上海到北京飞机要多久
  • 有没有学做衣服的网站莱芜都市网怎么样
  • 厦网站建设培训陕西宏远建设集团网站
  • 免费做那个的视频网站小程序制作需要什么技术
  • 台州微网站建设9k9k网页游戏开服表
  • 农家乐网站 建设建设网站几钱
  • 网站开发的app安卓开发课程
  • 网站建设 招标资质要求dw做的网站如何上传云服务
  • 电视剧手机网站大全站酷网app
  • 网站标签span做个英文网站多少钱
  • 建设地方美食网站的目的民企品牌建设
  • 手机网站制作得多少钱啊网站备案号中信息有变
  • 江西省住房城乡建设部网站国内最新新闻摘抄2023年
  • 湛江网站建设开发建个简单的网站
  • 外贸电商优化网站设计有哪些方法
  • 阿里巴巴国际网站建设徐州网站设计师
  • 17网站一起做网店档口出租如何建个人网站视频
  • 佛山微网站建设外链生成工具
  • 女生做seo网站推广沧州网站设计师招聘