如何从pthread(C)在Android NDK中调用回调(JAVA)
问题描述:
我想在pthread函数中调用java方法。如何从pthread(C)在Android NDK中调用回调(JAVA)
但我面对:
JNI_ERROR: non-VM thread making JNI calls
我该怎么办?
答
问题是您的线程未附加(或不正确)到虚拟机。 当您通过JNI桥从Java调用C++时,您的调用正在工作的pthread被附加到vm。 通过JNI调用C++中的线程可以说是不稳定的。 你可能做了什么就是创建一个新线程,并尝试在拨打电话之前从它拨打电话,而无需将其附加到VM。 我认为要解决您的问题,您应该将您的线程附加到虚拟机。
所以,如果你看到Android Tips and tricks有关于这个问题 一节。如果你去螺纹部分,你可以看到部分,他们清楚地说:
直到螺纹连接,它有没有JNIEnv,并且不能使JNI 调用。
您可以在提供的链接中找到解决问题的详细步骤。
发布你的进步...
+1
谢谢,我打算去做。并发布我的进度。 – Joel 2012-07-18 01:19:01
这也许可以帮助:https://groups.google.com/forum/?fromgroups#!topic/android-ndk/FfQlfrKwwtw – 0gravity 2012-07-17 04:16:39
谢谢,但我认为该链接ISN”我想要什么。 – Joel 2012-07-17 04:43:08