Utrzymywanie globalnego odniesienia do środowiska JNIEnv

PrzechowujęJNIEnv w globalnym, więc mogę później wywołać statyczne metody java. Ale czy nie jest konieczne zapisywanie globalnego wskaźnika doJNIEnv, sposób, w jaki robiłby to każdy inny obiekt java, czy jest to specjalny przypadek, który tego nie wymaga.

JNIEnv* globalEnvPointer;

[JNICALL etc] void init(JNIENv* env, [etc])
{
   //required?
   globalEnvPointer = (JNIENv*) (env*)->GetGlobalRef(env, env);
   //or is this OK?
   globalEnvPointer = env;
}

Edytować

Jestem tu trochę głupi, wszystkie metody, które będą używaneglobalEnvPointer, są wywoływane w moim init, ponieważ mojeinit jest właściwie mójc programmain metoda, która nie wróci do końca programu. Nie używam także innych wątków w programie c. Myślę, że to upraszcza odpowiedź.

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
}

questionAnswers(1)

yourAnswerToTheQuestion