Android NDK代码:
pthread_create(&msg_thread, NULL, msg_runnable, NULL);
void *msg_runnable(void *arg) {
...
pthread_detach(pthread_self());
...
pthread_exit(NULL);//crash
....
}报错:
threadid=12:native thread exited without detaching解决办法:
void *msg_runnable(void *arg) {
JNIEnv *env = NULL;
(*g_jvm)->AttachCurrentThread(g_jvm, &env, NULL);
...
pthread_detach(pthread_self());
...
(*g_jvm)->DetachCurrentThread(g_jvm);
pthread_exit(NULL);//crash
....
}
http://stackoverflow.com/questions/26534304/android-jni-call-attachcurrentthread-without-detachcurrentthread
http://www.eoeandroid.com/thread-305650-1-1.html?_dsign=047adc30
本文介绍了一个关于Android NDK开发中线程崩溃的问题及其解决方案。问题表现为使用pthread_exit退出线程时出现崩溃,原因是没有正确地从JNI环境中分离线程。通过在pthread_exit前调用DetachCurrentThread方法可以有效解决此问题。

4025

被折叠的 条评论
为什么被折叠?



