Сохранение глобальной ссылки на среду JNIEnv
Я откладываюJNIEnv
в глобальном, так что я могу вызвать статические методы Java позже. Но нужно ли хранить глобальный указатель наJNIEnv
Они могут быть такими же, как с любым другим Java-объектом, или это особый случай, который не требует этого.
JNIEnv* globalEnvPointer;
[JNICALL etc] void init(JNIENv* env, [etc])
{
//required?
globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
//or is this OK?
globalEnvPointer = env;
}
Edit
Я немного тупой здесь, все методы, которые будут использоватьglobalEnvPointer
вызываются в моем init, потому что мойinit
на самом деле мойc
Программа & APOS; smain
метод, который не вернется до конца программы. Я также не использую другие темы в программе c. Я думаю, что это упрощает ответ.
JNIEnv* globalEnvPointer;
[JNICALL etc] void main(JNIENv* env, [etc])
{
//required?
globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
//or is this OK?
globalEnvPointer = env;
someMethod();
}
void someMethod()
{
//use globalEnvPointer here
}