JNI在非UI线程上回调Java

时间:2012-12-13 14:28:19

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

我在java中创建了一个线程,它使用JNI将数据传递给传统的C ++。 C ++代码在单独的线程上执行某些任务然后返回,此时我想从JNI回调到Java线程而不是主接口线程。代码似乎构建并运行没有错误,但是当调用CallVoidMethod来回调Java时没有任何事情发生,没有异常或错误,它似乎确实调用了Java代码。

我正在调用AttachCurrentThread,它似乎在最后工作和分离,查找方法的调用似乎都成功了。有没有人有任何想法或我有错误的想法?

1 个答案:

答案 0 :(得分:2)

没有银弹来解决这个问题;你可以让任何一个小东西出错。我建议与一些不起作用的代码违反直觉。设置方法ID deliberatly错误;看看系统的行为方式如何。将对象引用(或类引用,如果它是静态方法)设置为意外对象或不存在的对象;看看当对象引用未全球化时会发生什么......你已经有了这个想法。