如何在Android NDK中从pthread(C)调用JAVA回调函数

3
我希望您能够在pthread函数中调用Java方法,但我遇到了以下问题:
JNI_ERROR: non-VM thread making JNI calls

我该怎么办?


也许这可以帮助你:https://groups.google.com/forum/?fromgroups#!topic/android-ndk/FfQlfrKwwtw - 0gravity
谢谢,但我认为链接不是我想要的。 - Joel
1个回答

2
问题在于你的线程没有被附加(或不正确地附加)到VM上。 当你通过JNI桥从Java调用C++时,你的调用所在的pthread会与VM附加。 在C++中有被JNI调用的线程是很不稳定的。 你可能做的是新建了一个线程,并试图在没有将其附加到VM之前从中进行调用。 我认为解决你的问题只需要将你的线程附加到VM即可。
因此,如果你查看Android技巧和诀窍,有一个关于这个主题的部分。 如果你进入线程部分,你可以看到他们清楚地说:

在线程附加之前,它没有JNIEnv,也不能进行JNI调用。

你可以在提供的链接中找到详细的解决步骤。
发布你的进展...

1
谢谢,我会去做并发布我的进度。 - Joel
参考文档对如何解决问题并不是很明确。这里有另一个问题,帮助我将我的C++线程附加到JVM上。https://dev59.com/lV8d5IYBdhLWcg3wtz8Q - Brad G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接