我正在从我的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()之类的东西会有帮助吗?
答案 0 :(得分:1)
通知Java端的一种方法是调用方法。
对于可重用的解决方案,将通知定义为接口中的方法。修改本机方法,以便它接受将接口实现为参数的对象。当需要通知Java方面发生了有趣的事情时,请在该对象上调用适当的方法。
如果你关心设计模式,那基本上就是strategy pattern。
答案 1 :(得分:0)
我做了“Andreas Grapentin”提到:
你不能将你的JNI方法分成多个较小的方法并处理 您的应用中的通话之间的进度是否已更新?
这里真的没问题,就像魅力一样。谢谢!