首页 > 生活 > > 正文
2023-09-06 03:15:05

java接口视频教程(如何得到JavaVMJNIEnv接口)

导读 大家好,我是小根根,我来为大家解答以上问题。java接口视频教程,如何得到JavaVMJNIEnv接口很多人还不知道,现在让我们一起来看看吧!1、J...

大家好,我是小根根,我来为大家解答以上问题。java接口视频教程,如何得到JavaVMJNIEnv接口很多人还不知道,现在让我们一起来看看吧!

1、JavaVM接口

2、第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。

3、第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。

4、两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。

5、Android系统是利用第二种方式Invocation interface来创建JVM的。

6、JNIEnv接口

7、JNI开发最常见的错误就是滥用了JNIEnv接口。需要强调的是JNIEnv是跟线程相关的。

8、在native method中,JNIEnv作为第一个参数传入。那么在JNIEnv不作为参数传入的时候,该如何获得它?JNI提供了两个函数:(*jvm)->AttachCurrentThread(jvm, (void**)&env, NULL)和(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_2)。两个函数都利用JavaVM接口获得JNIEnv接口,上面已经讲到如何获得JavaVM接口。

9、JNI规范也说明,可以将获得JNIEnv封装成一个函数。

本文到此讲解完毕了,希望对大家有帮助。