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



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

但我面对的是:

JNI_ERROR: non-VM thread making JNI calls

我该怎么办?

问题是您的线程没有附加(或不正确地)到VM。当您通过JNI桥从Java向C++进行调用时,您正在进行调用的pthread会连接到vm。至少可以说,在C++中拥有由JNI调用调用的线程是不稳定的。您所做的可能是创建一个新线程,并尝试在进行调用之前从中进行调用,而不将其附加到VM。我认为要解决你的问题,你应该把你的线程连接到虚拟机上。

因此,如果你看到安卓提示和技巧,有一节是关于这个主题的如果你去线程部分,你可以看到他们明确表示的部分:

在附加线程之前,它没有JNIEnv,并且不能生成JNI电话。

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

发布您的进度。。。

最新更新