在Java中定义
1.局部变量
public native void cache();
2.全局变量
public native static void initId();
javah生成头文件
JNIEXPORT void JNICALL Java_com_boom_JNITest_cache
(JNIEnv *, jobject);
JNIEXPORT void JNICALL Java_com_boom_JNITest_initId
(JNIEnv *, jclass);
源文件中代码具体实现
//static jfieldID key_id;
JNIEXPORT void JNICALL Java_com_boom_JNITest_cache
(JNIEnv *env, jobject jobj) {
jclass jcls = (*env)->GetObjectClass(env,jobj);
//获取jfieldID 只获取一次
//局部静态变量
static jfieldID key_id = NULL;
if (key_id==NULL)
{
key_id = (*env)->GetFieldID(env, jcls, "name", "Ljava/lang/String;");
printf("============\n");
}
}
//Gobal
//初始化全局变量,动态库加载完成之后,立刻缓存起来
jfieldID key_fid;
jmethodID random_mid;
JNIEXPORT void JNICALL Java_com_boom_JNITest_initId
(JNIEnv *env, jclass jcls) {
key_fid = (*env)->GetFieldID(env, jcls, "name", "Ljava/lang/String;");
random_mid = (*env)->GetMethodID(env,jcls,"getRandomInt","(I)I");
}