У меня есть класс runnable:
public class GetUpdatesThread implements Runnable{
@Override
public void run() {
//call a webservice and parse response
}
}
Который я хочу стрелять каждые 10 секунд, например...
Я хотел бы знать, как я могу управлять обработчиками или исполняемыми файлами или таймерами в своей деятельности, чтобы это сделать?
Заранее спасибо!
Вы можете использовать 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);
Вы можете использовать метод таймера под названием scheduleAtFixedRate из этой ссылки. Я уже использую его в своем проекте, и он работает как шарм. Вам просто нужно дать начальное время задержки и период для него, тогда он будет работать.
Лучший способ сделать это - использовать класс AlarmManager.
1) назначьте AlarmManager с помощью метода serRepeat. ссылка для AlarmManager
2) установите широковещательный приемник в Alarmmanager, он будет вызывать приемник каждую конкретную продолжительность времени, теперь из Receiver вы можете начать свою нить.
если вы используете задачу Timer и другой планировщик, Android убьет их через некоторое время.
Вы можете использовать Handler и вызывать метод sendEmptyMessageDelayed. Вот учебник или два по использованию Handler. Также проверьте обновление пользовательского интерфейса из таймера из официального документа - он охватывает оба подхода с помощью TimerTask и Handler.
run()
я делаюupdateThread.start();
и он запускается один раз, но во втором он дает мне исключение ...java.lang.IllegalThreadStateException: Thread already started.
Что я должен сделать, чтобы это исправить?run()
например:new Thread(new GetUpdatesThread(/*my attributes*/)).start;
?