2013-02-03 39 views
1

我有延伸BroadcastReceiver一个类,并在这个类的onReceive方法我有这样的代码之后:如何发送延迟广播接收器x秒

Intent autoBoostIntent = new Intent(); 
autoBoostIntent.setAction(Values.ACTION_AUTO_BOOST); 
context.sendBroadcast(autoBoostIntent); 

走秀的purspose再调用同一个广播接收器课程一遍又一遍地与特定的action。问题是,我想延迟上述过程,因此例如每10秒发送一次广播。这可能吗?

编辑:我希望广播无限循环,无论设备是否唤醒(键盘解锁)。

回答

1

简而言之,您可以在您的代码中添加一个Thread.sleep(10000),这将导致线程在继续执行下一个操作之前休眠10秒。

但是,如果您使用的是BroadcastReceivers,则可以将应用程序扩展为使用AlarmManager类,该类将在设定的时间触发广播(您可以从现在开始以编程方式将其设置为10秒)。您可以使用Handler

+2

作为一个setRepeatingAlarm方法的AlarmManager使用+1。 BroadcastReceivers不允许长时间运行(我相信时间限制是10秒)。如果他们跑的时间比这次长,他们将被操作系统杀死。所以处理程序和睡觉线程可能不可靠。此外,在UI线程上使用Thread.sleep()可能会导致您的应用程序无法响应用户。 – cottonBallPaws

+3

'此外,在UI线程上使用Thread.sleep()可能会导致您的应用程序无法响应用户。它会。 :) –

+0

..此外AlarmMAnager不推荐用于短时间间隔。 使用异步任务(带处理程序)而不是延迟。 – auval