定期运行线程

时间:2012-06-01 10:55:42

标签: android multithreading web-services

我有一个像这样的可运行类:

public class GetUpdatesThread implements Runnable{

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

}

}

例如我每10秒就要开一次......

我想知道如何在我的活动中管理处理程序或runnables或计时器来完成此操作?

提前致谢!

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:3)

您可以使用此link中名为scheduleAtFixedRate的计时器方法。我已经在我的项目中使用它,它就像魅力一样。你只需要给它一个启动延迟时间和一段时间然后就可以了。

答案 2 :(得分:0)

您可以使用处理程序并调用sendEmptyMessageDelayed方法。这是使用Handler的tutorialtwo。另请查看官方文档中的Updating the UI from a Timer - 它涵盖了使用TimerTask和Handler的两种方法。

答案 3 :(得分:0)

执行此操作的最佳方法是使用AlarmManager类。

1)使用serRepeat方法安排AlarmManager。 link for AlarmManager

2)在Alarmmanager中设置广播接收器,它会在每个特定的持续时间内调用Receiver,现在从Receiver你可以启动你的线程。

如果你使用Timer任务和其他调度程序,Android会在一段时间后终止它们。