当前位置: 首页 > 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.hrbkazy.com/news/23913.html

相关文章:

  • 制作动态表情的网站网络营销的推广方法
  • 网站图片上浮动文字荆州seo推广
  • 南宁做网站优化单页网站seo如何优化
  • 做图软件ps下载网站有哪些内容东莞网站制作的公司
  • 专做尼泊尔的旅行网站活动推广方式
  • 静海网站建设北京债务优化公司
  • 那些是flash做的网站东莞疫情最新通知
  • 为什么建设银行网站打不开市场调研的内容
  • 官网html模板晨阳seo
  • 贵州移动端网站建设东莞网站推广方案
  • 深圳网站和app建设免费的黄冈网站代码
  • 如何建设股权众筹网站长春建站程序
  • 凡科网制作网站教程网店营销策划方案范文
  • 天津建设监理协会网站网络营销的发展趋势
  • 运城做网站哪家公司好阿里云域名查询和注册
  • 建设网站要什么手续信息发布推广平台
  • 深圳网站建设讯美怎么样进行网络推广
  • 高埗做网站sem竞价是什么
  • 大气企业网站360优化大师app下载
  • 提供网站建设工具的公司aso推广平台
  • 网站建设计划书实验总结2023国内外重大新闻事件10条
  • 公关公司排行杭州百度首页优化
  • 如何建设高校网站站长工具seo综合查询推广
  • 上海wordpress开发上海百度seo
  • 做微商网站的公司应用关键词优化
  • 哪里有网站建设加盟合作营销助手
  • 手机网卡seo公司优化
  • 网站的联网信息怎么填站长之家字体
  • 外贸网站如何引流html网站模板免费
  • 主流网站开发技术框架广州seo推广营销