0

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

我有这个 JNI 片段:

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() 这样的东西会有所帮助?

4

2 回答 2

1

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

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

如果你关心设计模式,这基本上就是策略模式

于 2013-02-18T12:28:56.080 回答
0

我按照“Andreas Grapentin”提到的那样做:

您不能将您的 JNI 方法拆分为多个较小的方法并处理应用程序中调用之间更新的进度吗?

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

于 2013-02-21T12:36:18.397 回答