Estado de aplicação JNI
-
21-09-2019 - |
Pergunta
Como o estado é mantido ao acessar métodos através do JNI? No exemplo abaixo, meu código Java está chamando o método nativo drawFromjni, minha classe nativa _NC será persistida entre as chamadas?
Se houvesse melhores ferramentas de depuração nativa para o NDK, isso seria muito fácil de descobrir, mas estou realmente tendo problemas com o NDK e o C ++.
extern "C" {
JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv * env, jobject obj);
};
myNativeClass _nc;
JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv * env)
{
_nc.draw();
}
Solução
A implementação das funções JNI segue as regras de escopo para o idioma que você está implementando. Se você declarar _NC como uma variável global (como você fez no seu exemplo), ela será compartilhada durante todo o aplicativo.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow