Периодически запускать поток

1

У меня есть класс runnable:

public class GetUpdatesThread implements Runnable{

@Override
public void run() {
     //call a webservice and parse response

}

}

Который я хочу стрелять каждые 10 секунд, например...

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

Заранее спасибо!

Теги:
multithreading
web-services

4 ответа

3
Лучший ответ

Вы можете использовать TimerTask и можете реализовать это.

int delay = 5000; // delay for 5 sec.
int period = 10000; // repeat every 10 secs.

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

System.out.println("repeating");

}

}, delay, period);
  • 0
    Привет, я пытаюсь использовать это решение, и в методе run() я делаю updateThread.start(); и он запускается один раз, но во втором он дает мне исключение ... java.lang.IllegalThreadStateException: Thread already started. Что я должен сделать, чтобы это исправить?
  • 0
    Мне нужно каждый раз создавать новый поток в методе run() например: new Thread(new GetUpdatesThread(/*my attributes*/)).start; ?
3

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

0

Лучший способ сделать это - использовать класс AlarmManager.

1) назначьте AlarmManager с помощью метода serRepeat. ссылка для AlarmManager

2) установите широковещательный приемник в Alarmmanager, он будет вызывать приемник каждую конкретную продолжительность времени, теперь из Receiver вы можете начать свою нить.

если вы используете задачу Timer и другой планировщик, Android убьет их через некоторое время.

0

Вы можете использовать Handler и вызывать метод sendEmptyMessageDelayed. Вот учебник или два по использованию Handler. Также проверьте обновление пользовательского интерфейса из таймера из официального документа - он охватывает оба подхода с помощью TimerTask и Handler.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню