【发布时间】:2014-10-24 23:21:15
【问题描述】:
请咨询您的意见,我是 Android 编程新手。
我正在编写一个类似闹钟的软件,并使用公共类 AlarmManagerBroadcastReceiver 扩展 BroadcastReceiver
捕捉 AlarmManager 之前设置的警报。
为了不中断 UI,我在此类的公共 void onReceive(Context context, Intent intent) 中使用了新线程。
一般是这样的:
公共类 AlarmManagerBroadcastReceiver 扩展 BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Executors.newSingleThreadExecutor().submit(new Runnable() {
public void run() {
... //useful code
}
}
}
有时我的应用会面临多个广播同时出现的情况。 这会导致多个线程同时执行, 我不想发生这种情况,因为它干扰了有用的代码。
我希望线程进入队列并一个接一个地运行。 如果您以前遇到过这种情况,请您多多指教,有什么办法可以做到吗?
据我所知,问题是我制作了执行程序。newSingleThreadExecutor() 每次广播出现时,都会创建新的执行程序,并且线程不在旧执行程序的队列中,而是到新队列,因此它们再次同时运行。
【问题讨论】:
标签: android multithreading alarmmanager runnable executors