我开发了一个c
库。我使用 JNI
从我的 JAVA
代码调用库的 c
函数:
jstring Java_com_example_openafreerdp_UnboundedService_invokeNativeFunction(JNIEnv* env, jobject obj) {
...
}
JNI
函数是这样从 java 调用的:
public class UnboundedService extends Service {
static {
System.loadLibrary("hellondk");
}
private native String invokeNativeFunction();
private class JniBackGround extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... ss) {
final String str = invokeNativeFunction();
return str;
}
}
...
@Override
public void onStart(Intent intent, int startId) {
JniBackGround task = new JniBackGround();
task.execute(new String[] { "http://www.any.com" });
}
}
现在我的 C 函数需要很长时间才能完成执行。我想添加一个按钮来停止此执行。我怎样才能用JAVA阻止它?
最佳答案
如果fx有某种inf循环while(true)
,他总是可以使用while(someFlag)
并将someFlag
设置为false 在这个新的 invokeNativeStopFunction
中...如果他正在使用一些curl库调用(我对此表示怀疑,因为url没有传递给 native )他可以在那里取消curl请求...等等向前 ...
– 塞尔文
关于java - 是否可以停止 JNI 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27689723/