Android NDK线程中止程序

时间:2011-04-23 01:59:44

标签: android multithreading sdk java-native-interface android-ndk

为什么这个c ++(NDK)线程会使整个程序失效?

{   
sleep(2);

// The JNIEnv
JNIEnv* jenv = NULL;

// attach thread to running JVM
int err = jvm->AttachCurrentThread(&jenv, NULL);

char szerr[256];
sprintf(szerr, "AttachCurrentThread() returned: %d", err);

__android_log_print(ANDROID_LOG_ERROR, "MYPROG", szerr);

jvm->DetachCurrentThread();

sleep (5);
}

szerr为0,如果我没有AttachCurrentThread,程序不会中止。堕胎 发生时没有在console / logcat中指示任何错误。

任何帮助?

1 个答案:

答案 0 :(得分:1)

检查出来:

http://comments.gmane.org/gmane.comp.handhelds.android.ndk/4687

在调用GetEnv()之前,您可能应该使用AttachCurrentThread()来查看环境是否已设置(否则无需)。更多信息here