请征求您的意见,我是 Android 编程的新手。
我正在编写一个类似闹钟的软件,并使用公共类AlarmManagerBroadcastReceiver 扩展BroadcastReceiver 来捕捉AlarmManager 之前设置的警报。
为了不中断 UI,我在此类的 public 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()每次广播出现时,都会创建新的执行程序,线程不会进入旧队列,而是进入新队列,因此它们再次同时运行。