請問您的建議,我是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