2015-05-01 3 views
0

Я построил один класс AsyncTask, который возвращает определенное значение. Это значение часто меняется, поэтому мне нужно несколько раз вызвать мой класс AsyncTask, чтобы показать обновленное значение.Выполнять AsyncTask каждые три секунды

Я получаю от другого класса результат от AsyncTask.

 try { 
     output = new task().execute(getconversationid).get(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

И когда результат обновления AsyncTask, я снова вызываю свой другой класс, чтобы обновить все.

 private void call() { 

    new GetContacts().execute(id); 

    } 

    ... 

    mobilemessages = contacts.length(); 

    ... 

    myNum = Integer.parseInt(output); 

    if(myNum != mobilemessages) { 
     call(); 
    } 

Мой вопрос, как я могу установить таймер или Handler, чтобы обновить свой класс вызов (задание) каждые три секунды?

спасибо.

+2

Я бы так не справился с этим. Почему бы вам просто не создать фоновый поток, который обновит ваше значение, а затем отправить его обработчику для обновления вашего интерфейса при необходимости? – zgc7009

+0

я не думаю о том, что его намного проще, благодаря –

+0

Здесь вы идете: http://stackoverflow.com/questions/2258066/java-run-a-function-after-a-specific- число секунд – ScarletMerlin

ответ

0

Использование Thread.sleep(3000); 3000 в миллисекундах.

Try{ 

Thread.sleep(3000); 

}catch(Exception ex){ 
} 
+0

Это не подходит для AsyncTask –

+0

, если только в сочетании с' publishProgress' (но тогда было бы желательно запустить вашу асинтезу для выделенного исполнителя, чтобы избежать блокировки всех других асинтактов) – njzk2

+0

Это вызывает задержку –

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