2016-07-01 15 views
0

JNIライブラリのメソッド(例:JNI.calculate(listener))を実行しています。例えば30秒かかるはずです。私はこのメソッドを実行したかったが、(リスナー)をもう一度計算するが、最後に実行を停止する必要がある。 、非同期呼び出し例ごとに3秒間JNIメソッドの実行中止

public void canContinue(){ 
     return canContinue; 
} 

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

方法canContinue:リスナー、二つの方法があります - この方法では、一つのパラメータを持っています。私はちょうど待たずに、次のまでお待ちくださいが呼び出されます。すぐにこのメソッドの次の実行を実行したかったcalculate(リスナー)

お勧めはありますか?おそらく私はハンドラ、HandlerThread、スレッド、AsyncTaskまたはこのクラスのsom並べ替えを使用する必要がありますが、それを把握する方法?

答えて

0

私が正しく質問を理解していなかったが、私は遅延を維持することは、トリックを行うだろうと思い、遅延書き込みを維持するために、この

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

それを行うにはどのように悪い方法であること:

はあまりにも(それがスレッドの中断についてですと、いくつかの精度を与える)ことを参照してください。 UIと分離スレッドをブロックすることができました。もっと良い方法があるはずです。 @Redman – user997777

0

あなたはあなたの関数を呼び出す場合JNI.calculate(リスナー)スレッド?あなたは開始はできますが、他と即時実行したい場合は、この関数を呼び出して、スレッド、は(終了したスレッドを再起動することはありません!)スレッドと開始を中断していること。操作されたデータには注意が必要です。ミューテックスを使用してください。

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

+0

メソッドJNI.calculate(リスナー)は別のスレッドで実行されています。これはAndroidアプリの論理からはずれています。 @ N0un – user997777

+0

私は理解します。私もそれを見つけた:http://stackoverflow.com/a/14814420/6523232 @ user997777 – N0un