请问您的建议,我是Android编程新手。Android:让线程在AlarmBroarcastReceiver中一个一个排队排队
我正在写一个类似闹钟的软件,并且使用公共类AlarmManagerBroadcastReceiver扩展BroadcastReceiver 来捕获AlarmManager之前设置的闹钟。
为了不中断UI,我在这个类的public void onReceive(Context context,Intent intent)中使用了新线程。 一般来说它看起来像这样:
公共类AlarmManagerBroadcastReceiver扩展广播接收器{
public void onReceive(Context context, Intent intent) {
Executors.newSingleThreadExecutor().submit(new Runnable() {
public void run() {
... //useful code
}
}
}
有时我的应用程序面临在多个广播都在同一时间的情况。 这会导致多个线程在同一时间执行, 我不想发生这种情况,因为这会干扰有用的代码。
我想让线程进入队列并一个接一个地运行。 如果您之前遇到过这种情况,请您如此善意的提供建议,有没有什么办法可以做到这一点?
据我所知,问题在于我让Executors。 newSingleThreadExecutor()每当广播出现时,创建新的执行程序,并且线程不会进入旧队列队列,而是进入新队列,因此它们再次同时运行。
它的工作!谢谢你,我想我还有很多东西需要学习,因为我不完全明白它为什么起作用。再次感谢你,祝你有美好的一天。 – lxs 2014-08-31 17:02:15
我已经测试了一段时间,但不幸的是它不知道它总是工作。只要我在应用程序 - 它工作正常。但是当我关闭应用程序并等待闹钟时间到来时,多个闹钟同时发出,并且它们仍然根据我的日志记录同时运行。 – lxs 2014-08-31 17:13:36
我已经解决了这个使用应用程序服务,在服务类的构造函数中使用executor声明。然后我将来自alarmbroadcastreceiver的数据传递给排队和执行线程的服务。谢谢chiastic-security – lxs 2014-09-01 15:57:38