2011-09-20 44 views
1

我有一個數據庫調用的服務。該服務以意圖接收請求,並且當數據庫調用完成時,它廣播「更新完成」意圖,指示完成該呼叫。是否可以多次激發單個意圖?

有時數據庫已經填充了緩存數據,在這種情況下,我想立即廣播一個「更新完成」意圖,指示活動應該顯示緩存的數據,然後一旦數據庫被更新後再激發另一個「更新完成「意圖指示活動應該加載更新的數據。

問題是活動從未接收到第二個廣播。這是因爲我重新使用了已經被解僱的同一個意圖對象嗎?

下面的代碼:

if (scheduleDatabase.populated()) { 
    intent.putExtra("fromCache", true); 
    getApplicationContext().sendBroadcast(intent); 
} 

scheduleDatabase.update(); 
intent.putExtra("fromCache", false); 
getApplicationContext().sendBroadcast(intent); 

更新: 如果我註釋掉的意圖廣播中的一個,另一個總是火災和被接收。 另外,如果我使用相同的操作字符串創建兩個intent對象並單獨觸發它們,則活動只會收到第一個對象。我還不清楚對方是否被解僱但沒有收到,或者是否永遠不會被解僱。

回答

2

事實證明,我對意圖的問題是在我的代碼的不同區域出現更大問題的症狀。解決了這個問題之後,意圖開始發射並按照預期接收。所以,要回答我自己的原始問題,是的,可以多次激發一個意圖。

0

我遇到了類似的問題。是的,第二個意圖是覆蓋第一個意圖。我的解決方法是在我的BroadcastReceiver中創建一個新的Intent。您可以訪問相同的上下文,並可以傳遞額外的數據。

+0

我不知道爲什麼我想在接收器中創建一個意圖。也許你可以給我更多有關你的解決方法的細節?此外,第一個意圖總是被接收,第二個意圖不是。如果第二個覆蓋第一個,我不會看到會發生什麼。 – howettl

+0

在我的情況下,我使用AlarmManger根據先前的警報傳遞的信息創建新的警報。我有一個倒數計時器表。我把額外事件中的上一次鬧鐘的時間傳給我,以便我可以從桌子上抓下一個鬧鐘。然後我可以用AlarmManager或者在那個時候觸發你的意圖。 – nock

相關問題