【发布时间】:2012-12-13 14:28:19
【问题描述】:
我在 java 中创建了一个线程,它使用 JNI 将数据传递给旧版 C++。 C++ 代码在单独的线程上执行一些任务然后返回,此时我想从 JNI 回调到 Java 线程而不是主接口线程。代码似乎可以毫无错误地构建和运行,但是当调用 CallVoidMethod 以回调 Java 时,什么也没有发生,没有异常或错误,它似乎确实调用了 Java 代码。
我正在调用 AttachCurrentThread,它似乎工作并在最后分离,查找方法的调用似乎都成功了。有没有人有任何想法或我有错误的想法?
【问题讨论】:
-
在您正在调用的方法的开头添加一条日志语句,以查看它是否被调用。确保在 JNI 代码中调用 ExceptionCheck 以查看 CallVoidMethod 中 Java 端是否出现故障。你说“什么都没有发生”,但也说“似乎调用了 Java 代码”,所以我不太确定你看到了什么或者它是如何失败的。
-
如果您粘贴代码,我们可以给您一些建议
标签: android multithreading android-ndk java-native-interface