【问题标题】:How to invoke callback(JAVA) from pthread(C) in Android NDK如何在 Android NDK 中从 pthread(C) 调用回调(JAVA)
【发布时间】:2012-07-17 04:11:34
【问题描述】:

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

但我遇到了:

JNI_ERROR: non-VM thread making JNI calls

我该怎么办?

【问题讨论】:

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


【解决方案1】:

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

因此,如果您看到Android Tips and tricks,则有一个关于该主题的部分 如果你去线程部分,你可以看到他们清楚地说的部分:

直到一个线程被附加,它没有JNIEnv,并且不能做JNI 来电。

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

发布您的进度...

【讨论】:

  • 谢谢,我会去做的。并发布我的进度。
  • 引用的文档在如何解决问题方面不是很明确。这是另一个帮助我将 c++ 线程附加到 JVM 的问题。 stackoverflow.com/questions/26534304/…
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多