2012-04-23 2 views
0

У меня есть собственный код с pthread и когда я вызываю pthread_create Я передаю JNIEnv *, который я получил из JAVA-кода, в качестве аргумента функции потока. JNIEnv * действителен, и все используемые вызовы выполняются рядом с вызовом (jclass) i_env-> NewGlobalRef (i_env-> FindClass («my/package/com/Myclass»)); который возвращает null.Создание NewGlobalRef из новой темы

Почему?

10xs, Наум

ответ

1

JNIEnv является поточно специфичны. Вы не можете использовать один JNIEnv из одного потока в другом.

Чтобы получить JNIEnv для текущей темы, вы должны вызвать AttachCurrentThread объекта JavaVM. Читайте здесь: http://developer.android.com/guide/practices/design/jni.html#JavaVM_and_JNIEnv

А чтобы получить JavaVM функции использования объекта JNI_OnLoad: http://developer.android.com/guide/practices/design/jni.html#native_libraries

+0

я называю JNI_OnLoad, чтобы сохранить копию JavaVM *, а затем AttachCurrentThread но NewGlobalRef еще возвращает 0 – nmnir

Смежные вопросы