Запустите метод только на 10 секунд асинхронно Android - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть набор действий или функций, которые нужно выполнять только в течение определенного времени, скажем, X секунд.Как я могу выполнить эту задачу и отобразить успех или неудачу, если я могу полностью выполнить функцию в указанное время.

Я не хочу блокировать пользовательский интерфейс Android при выполнении активации.Пробовал использовать do при использовании getCurrentTime (), но это блокирует пользовательский интерфейс.

1 Ответ

0 голосов
/ 11 сентября 2018

В файле класса активности:

private boolean status = false; //set a initial flag   
private Handler customHandler;
customHandler = new Handler();
Runnable currentThreadTask = new Runnable() {
    @Override
    public void run() {
      status = customfunction();
    //call your function,suppose the function executed successfully,'status' changed to ture.   
    }
};
customHandler.post(currentThreadTask);

public boolean customfunction(){
 //Time consuming operations
 return true;
}

И создайте countDownTimer, например:

     new CountDownTimer(5000, 1000) {

         public void onTick(long millisUntilFinished) {

         }

         public void onFinish() {//5 seconds passed
             //Check 'status' value
             //If status is still equal false,then customfunction executed failed in 5 seconds
             //otherwise it successed.
         }
      }.start();
...