是否可以停止JNI呼叫

时间:2014-12-29 13:20:58

标签: java android c java-native-interface

我开发了一个c库。我使用c JAVA代码调用了库的JNI函数:

jstring Java_com_example_openafreerdp_UnboundedService_invokeNativeFunction(JNIEnv* env, jobject obj) {
    ...
}

以这种方式从java调用JNI函数:

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阻止它?

1 个答案:

答案 0 :(得分:0)

如果fx存在某种inf循环,while(true)他总是可以使用while(someFlag)并在新someFlag内将invokeNativeStopFunction设置为false ...如果他是使用一些curl库调用(我怀疑,因为url没有传递给native)他可以在那里取消curl请求......依此类推......                      - Selvin