java - 是否可以停止 JNI 调用

标签 java android c java-native-interface

我开发了一个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/

相关文章:

java - Apache HttpClient(4.1 及更高版本): how to do basic authentication?

android - 在 Android 中使用现有的 ".so"文件(在 Linux 上创建)

java - 从 Ninite.com 更新后 Eclipse 无法打开

java - Kotlin ViewPager2 : Class 'ScreenSlidePagerAdapter' is not abstract and does not implement base class member

android - 我应该使用什么作为边距,sp 或 dp?

在标准 C 中将 int 转换为字符串

c - volatile 无符号整数 * 常量

c++ - 连接Broadcom设备解析云

java - org.apache.http.entity.ContentType 不再在 Apache 中了吗?

java - 使用空列表比在java中对列表进行空检查更昂贵吗?