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();
}
Foi útil?

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
scroll top