我有一個數據庫調用的服務。該服務以意圖接收請求,並且當數據庫調用完成時,它廣播「更新完成」意圖,指示完成該呼叫。是否可以多次激發單個意圖?
有時數據庫已經填充了緩存數據,在這種情況下,我想立即廣播一個「更新完成」意圖,指示活動應該顯示緩存的數據,然後一旦數據庫被更新後再激發另一個「更新完成「意圖指示活動應該加載更新的數據。
問題是活動從未接收到第二個廣播。這是因爲我重新使用了已經被解僱的同一個意圖對象嗎?
下面的代碼:
if (scheduleDatabase.populated()) {
intent.putExtra("fromCache", true);
getApplicationContext().sendBroadcast(intent);
}
scheduleDatabase.update();
intent.putExtra("fromCache", false);
getApplicationContext().sendBroadcast(intent);
更新: 如果我註釋掉的意圖廣播中的一個,另一個總是火災和被接收。 另外,如果我使用相同的操作字符串創建兩個intent對象並單獨觸發它們,則活動只會收到第一個對象。我還不清楚對方是否被解僱但沒有收到,或者是否永遠不會被解僱。
我不知道爲什麼我想在接收器中創建一個意圖。也許你可以給我更多有關你的解決方法的細節?此外,第一個意圖總是被接收,第二個意圖不是。如果第二個覆蓋第一個,我不會看到會發生什麼。 – howettl
在我的情況下,我使用AlarmManger根據先前的警報傳遞的信息創建新的警報。我有一個倒數計時器表。我把額外事件中的上一次鬧鐘的時間傳給我,以便我可以從桌子上抓下一個鬧鐘。然後我可以用AlarmManager或者在那個時候觸發你的意圖。 – nock