2

如果我创建了一个服务,我如何让它每 X 秒广播一次意图?我记得看到过一段代码

startThreadDelayed( new Thread() {
    public void run() {
        doStuff();
        sendBroadcast(messageIntent);
        startThreadDelayed(this, 1000);
    }
}, 1000);

不幸的是,对于循环的任何内容,我都不确定类名或确切的方法名。只要一个名字就可以为我指明正确的搜索方向。

4

2 回答 2

3

您可以考虑使用AlarmManager。通过使用它,您可以触发任何Intent一次或任何计划的重复。

例如:

Intent i = new Intent(this, YourReceiver.class);
PendingIntent broadcast = PendingIntent.getBroadcast(this, 0, i, 0);

long first = System.currentTimeInMillis(); // now
long interval = 5 * 1000; // every 5 seconds
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC, first, interval, broadcast);
于 2013-04-17T02:44:16.603 回答
3

你可以使用Handler.postDelayed. 这是文档。

例如

Handler h = new Handler();
YourClass yourRunnable = new YourClass();
h.postDelayed(youRunnable,1000);


public class YourClass implements Runnable{
    public void run(){
    doStuff();
    sendBroadcast(messageIntent);
    if(running)
        h.postDelayed(youRunnable,1000);
}

这里 running 是一个标志,最好将其保持为 volatile 布尔值。因此,通过更改它的值,您可以停止重复。

于 2013-04-17T02:27:52.870 回答