停止运行JNI方法的执行

时间:2016-07-01 07:08:00

标签: android multithreading java-native-interface thread-safety android-handler

我有JNI库的执行方法(例如 JNI.calculate(listener))。它应该需要例如30秒。我想但是再次执行这个方法计算(监听器),但首先我需要停止上次执行。此方法有一个参数 - listener,它有两个方法:

public void canContinue(){
      return canContinue;
}

public void result(int number){
      //some code
}

方法 canContinue 每隔3秒调用异步,例如。我只是不想等待,直到下一个 canContinue 将被调用。我想立即执行此方法的下一次执行 calculate(listener)

你有什么建议吗?可能我应该使用 Handler,HandlerThread,Thread,AsyncTask 或som这类,但如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我没有正确理解这个问题,但我认为保持延迟会做到这一点,保持延迟写这个

try {       
      Thread.sleep(1000); // time in milliseconds
    } catch (InterruptedException e) {
         e.printStackTrace();
      }

答案 1 :(得分:0)

如果您从主题中调用您的函数 JNI.calculate(listener) ,该怎么办?您可以 启动 调用此函数的线程,当您想要其他立即执行时, 中断 线程和 启动 另一个(永远不会重新启动已终止的线程!)。小心操纵数据:你应该使用互斥来阻止它。

也可以看到它(关于线程中断并给出一些精确性):

https://stackoverflow.com/a/6378525/6523232