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

做八年级题目的网站百度官方下载

做八年级题目的网站,百度官方下载,在线网站软件免费下载安装,企业为什么要用钉钉不同线程都需要通过 JavaVM 获取到的 JNIEnv 指针, 如果有两个线程有两个 env。 其中一个是jni接口自己传过来的,可以正常使用,正常获取kotlin中的class。但是通过 JavaVM 新获取的env 无法找到kotlin的class 1. 确保线程已附加到 JVM 确保…

不同线程都需要通过 JavaVM 获取到的 JNIEnv 指针, 如果有两个线程有两个 env。 其中一个是jni接口自己传过来的,可以正常使用,正常获取kotlin中的class。但是通过 JavaVM 新获取的env 无法找到kotlin的class

1. 确保线程已附加到 JVM

确保每个线程在使用 JNIEnv 之前已附加到 JVM。可以在每个线程中调用 AttachCurrentThread

JavaVM* g_jvm = nullptr;JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {g_jvm = vm;return JNI_VERSION_1_6;
}void someJNIFunction() {JNIEnv* env;if (g_jvm->AttachCurrentThread(&env, nullptr) != JNI_OK) {// 处理错误return;}// 使用 env 进行 JNI 调用jclass cls = env->FindClass("com/example/YourKotlinClass");if (cls == nullptr) {// 处理类未找到的错误}// 线程使用完成后,分离线程g_jvm->DetachCurrentThread();
}

2. 确保正确缓存类引用(关键:类要转化成全局引用即可给不同env使用)

确保类引用被正确缓存,并且在不同的线程中可用。可以在 JNI_OnLoad 中缓存类引用:

jclass g_yourKotlinClass; //这里是关键JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {g_jvm = vm;JNIEnv* env;if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {return JNI_ERR;}// 这部分代码也可以写在 someJNIFunction 内。 不一定要写在JNI_OnLoad内jclass localClass = env->FindClass("com/example/YourKotlinClass");g_yourKotlinClass = (jclass) env->NewGlobalRef(localClass);env->DeleteLocalRef(localClass);return JNI_VERSION_1_6;
}

3. 例子:完整示例代码

#include <jni.h>
#include <android/log.h>#define LOG_TAG "JNI_OnLoad"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)JavaVM* g_jvm = nullptr;
jclass g_yourKotlinClass = nullptr;JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {g_jvm = vm;JNIEnv* env;if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {return JNI_ERR;}jclass localClass = env->FindClass("com/example/YourKotlinClass");if (localClass == nullptr) {return JNI_ERR; // 类加载失败}g_yourKotlinClass = (jclass) env->NewGlobalRef(localClass);env->DeleteLocalRef(localClass);return JNI_VERSION_1_6;
}void someJNIFunction() {JNIEnv* env;if (g_jvm->AttachCurrentThread(&env, nullptr) != JNI_OK) {// 处理错误return;}if (g_yourKotlinClass == nullptr) {LOGD("Kotlin class is null");return;}jmethodID methodID = env->GetMethodID(g_yourKotlinClass, "yourMethodName", "()V");if (methodID == nullptr) {LOGD("Method ID not found");return;}jobject obj = ... // 获取对象实例env->CallVoidMethod(obj, methodID);g_jvm->DetachCurrentThread();
}
http://www.shuangfujiaoyu.com/news/2725.html

相关文章:

  • 男女做那个真实的视频网站子域名大全查询
  • 杭州模板建站哪家好广东疫情动态人民日报
  • 北京疫情为什么突然又严重了淘宝标题优化工具推荐
  • 做网站的地方提高百度搜索排名工具
  • 站长工具国产2022软文营销案例200字
  • 免费找客户的网站成都网站建设团队
  • wordpress页面cssseo顾问服务深圳
  • wordpress 多说百度快照优化排名推广
  • 网络营销的概念及手段宁德seo公司
  • 建设网站公司专业服务北京网站提升排名
  • 个人操作做网站排名百度登录注册
  • 江苏省做网站各大网站的网址
  • html5 wordpress 主题电商网站seo怎么做
  • 信誉好的做pc端网站四年级摘抄一小段新闻
  • 一个可以做网站信阳seo推广
  • linux web wordpress网络营销乐云seo
  • html5响应式网站psd宁德市教育局官网
  • dw做网站模版磁力猫引擎
  • 福州市建网站公司seo查询官方网站
  • 蓄电池回收网站建设宁波seo排名优化
  • 许昌市做网站公司汉狮价格武汉网站设计公司
  • 常州建设网站公司网站怎样免费制作网页
  • 网站页面怎么做识别二维码网络营销方案ppt
  • 做电子章网站百度竞价点击价格公式
  • 网站域名怎么注册公司网站的作用
  • 积积桶肤肤的免费软件大全简述seo
  • 成都网站建设的公司哪家好百度竞价排名广告定价鲜花
  • 媒体平台化网站优化的方法
  • 官方网站建设浏阳廖主任打人案
  • 特卖网站设计武汉seo网站排名优化公司