2012-05-07 8 views
1

複数のアラームマネージャーが別々の時刻にインテントを送信するようにスケジュールしました。 私は保留中の両方のインテントに一意のID、コンテキスト、およびエクストラを渡すように注意しました。 funcの下の はアラームコールを処理します。 。アラームマネージャーの遅延。同時に2つのアラームが存在する場合

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); } 

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

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

アラームを呼び出す2つの機能がある私は、ユニークID1とUnique_ID2が異なっていることを世話をしました。 ブロードキャスト受信者はアラームを処理し、別のコードを実行します。 Callalarm1とCallalarm2が互いに干渉する可能性はありますか?

私はAndroidのマニフェストファイルにregisterReceiver機能を使用して受信機に登録されていません。放送受信装置を拡張ARにおいて

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

、私は、アクションを定義するためにIDを使用。

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

問題は、アラームが遅れてしまうことです。遅延がある理由はありますか?

+0

Oh Stakc Overfloeのユーザーはなぜ私に解決策を与えてくれませんか? – yontak

答えて

1

私が知っている通り、アラームMAnagerは、プロセッサの負荷が重いときには適切なタイミングで起動できません。言い換えれば

アラームマネージャは、いくつかの遅延で送信されたキューにブロードキャストを追加するので、放送受信機は、時間上の意図を受信しません。..

正確な情報が便利です。

関連する問題