2016-07-01 2 views
0

У меня есть метод выполнения (например, JNI.calculate (слушатель)) библиотеки JNI. Это займет, например, 30 секунд. Я захотел, но выполнил этот метод снова вычислить (прослушиватель), но сначала мне нужно остановить последнее выполнение. Этот метод имеет один параметр - слушатель, который имеет два метода:Остановить выполнение JNI-метода

public void canContinue(){ 
     return canContinue; 
} 

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

Метод canContinue вызывает асинхронный, например каждые 3 секунды. Я просто не хочу ждать, пока не будет вызван canContinue. Я хотел немедленно выполнить следующий запуск этого метода. вычислить (прослушиватель).

Есть ли у вас какие-либо рекомендации? Вероятно, я должен использовать Обработчик, HandlerThread, Thread, AsyncTask или som вроде этого класса, но как это понять?

ответ

0

я не понял вопрос правильно, но я думаю, сохраняя задержку будет делать трюк, чтобы держать задержки записи этого

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

Это плохой способ, как сделать это. Я мог заблокировать пользовательский интерфейс и разделительную нить. Думаю, должен быть лучший способ. @Redman – user997777

0

Что делать, если вы называете функции JNI.calculate (слушатель) от Тема:? Вы можете начала что тема, которая вызывает эту функцию, и если вы хотите другое и немедленное исполнение, прерывания нити и начала другой (не перезапускать завершившуюся нить!). Будьте осторожны с управляемыми данными: вы должны использовать mutex , чтобы предотвратить его.

Смотрите, что тоже (речь идет о прерывании потока и дает некоторые уточнения):

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

+0

Метод JNI.calculate (слушатель) работает на отдельном потоке, который выходит из логики приложения для Android. @ N0un – user997777

+0

Я понимаю. Я тоже нашел это: http://stackoverflow.com/a/14814420/6523232 @ user997777 – N0un

Смежные вопросы