2012-05-07 54 views
1

我已安排多個報警管理器在不同時間發送意圖。 我小心地將唯一的ID,上下文和額外信息傳遞給待處理的意圖。在func下面的 處理報警呼叫。 。延遲報警管理器..當兩個報警同時存在時

public void handle(int duration, int id){ 
Intent intent = new Intent("package.SET"); 
intent.putExtra ("package.id", Id); 
AlarmManager amg = (AlarmManager)Context.getSystemService(Context.ALARM_SERVICE); 
PendingIntent pis = PendingIntent.getBroadcast(Context,Id, intent, FLAG_ONE_SHOT); 
amg.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + time, pis); } 

有2個功能調用報警

public void callalarm(int time){ 
handle(time, UNIQUE_ID1);} 

public void callalarm2(int time){ 
    handle(time, UNIQUE_ID2);} 

我十分小心,獨特的ID1和Unique_ID2是不同的。 廣播接收機處理警報並執行另一個代碼。 Callalarm1和callalarm2是否有可能干擾彼此。

我一直在使用registerReceiver功能,而不是在Android清單文件註冊的接收器。

 IntentFilter ARFilter = new IntentFilter(); 
    ARFilter.addAction("package.SET"); 
    context.registerReceiver(AR, ARFilter); 

在延伸廣播接收機的AR,我使用id來定義的動作。

public BroadcastReceiver AR= new BroadcastReceiver() 
{ public void onReceive(Context context, Intent intent) 
    { // i do some stuff here which is confidential 
     }} 

問題是,我得到了報警延遲。有沒有延遲的原因?

+0

哦Stakc Overfloe的用戶爲什麼你不給我解決方案? – yontak

回答

1

從我所知道的情況來看,當處理器的任務負擔很重時,報警主持人無法在正確的時間開火。

換句話說,廣播接收機不按時收到意圖,因爲報警管理器將廣播到與一些延遲發送的隊列..

精確的信息是有幫助的。