返回状态 - 从JNI到JAVA的信息

时间:2013-02-18 08:29:38

标签: java c java-native-interface

我正在从我的JAVA应用程序中调用一个长期运行的JNI方法。 JNI方法做了几件事,我想在每一步之后得到状态消息。

我有这个JNI-snippet:

JNIEXPORT void JNICALL Java_my_package_Engine_start(JNIEnv * env, jclass class, jstring address, jstring file) {
    longRunningMethod1();
    // notify java that method 1 is finished

    longRunningMethod2();
    // notify java that method 2 is finished

    longRunningMethod3();    
}

我以这种方式调用方法:

Engine.start(param1, param2);

此方法阻止,直到JNI中的所有内容都完成 - 这没关系,但现在我想得到&处理状态信息。

也许像puts()之类的东西会有帮助吗?

2 个答案:

答案 0 :(得分:1)

通知Java端的一种方法是调用方法。

对于可重用的解决方案,将通知定义为接口中的方法。修改本机方法,以便它接受将接口实现为参数的对象。当需要通知Java方面发生了有趣的事情时,请在该对象上调用适当的方法。

如果你关心设计模式,那基本上就是strategy pattern

答案 1 :(得分:0)

我做了“Andreas Grapentin”提到:

  

你不能将你的JNI方法分成多个较小的方法并处理   您的应用中的通话之间的进度是否已更新?

这里真的没问题,就像魅力一样。谢谢!