如何从Android NDK中的pthread(C)调用回调(JAVA)

时间:2012-07-17 04:11:35

标签: android java-native-interface pthreads android-ndk

我想在pthread函数中调用java方法。

但我遇到了:

JNI_ERROR: non-VM thread making JNI calls

我该怎么办?

1 个答案:

答案 0 :(得分:2)

问题是您的线程没有连接(或没有正确)到VM。 当您通过JNI桥接器从Java到C ++进行调用时,您的调用正在处理的pthread将附加到vm。 在C ++中使用由JNI调用调用的线程至少可以说是易失性的。 您可能已经完成的工作是创建一个新线程并尝试通过它进行呼叫,而无需在拨打电话之前将其附加到VM。 我认为,要解决您的问题,您应该将您的线程附加到VM。

因此,如果您看到Android Tips and tricks,则会有关于该主题的部分 如果你去线程部分,你可以看到他们明确说出的部分:

  

在连接一个线程之前,它没有JNIEnv,也无法生成JNI   调用

您可以在提供的链接中找到解决问题的详细步骤。

发布您的进度......