2

複数のアラームを持つアラームアプリケーションを作成中異なるリクエストコードを持つPendingIntentとAlarmServiceを使用してダイアログを表示します。最初のダイアログがスヌーズまたはディスマイズされる前でも、2番目のダイアログがポップアップします。これを防ぐにはどうすればよいですか?異なる要求が同時に発生しないことを確認してください)異なるリクエストコードで同時に2つの保留中のインテントによってトリガーされる2つの異なるアラームアラートダイアログを防ぐことができます

1:

public void setAlarm() { 
     AlarmManager amgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);  
     PendingIntent pi = PendingIntent.getService(context, requestcode, i, PendingIntent.FLAG_CANCEL_CURRENT); 
     min = (amod.getHour() * 60) + amod.getMinute(); 
     amgr.set(amgr.RTC,System.currentTimeMillis()+(min*60*1000), pi); 

} 

public class AlarmService extends Service { 

@Override 
public IBinder onBind(Intent arg0) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    playTone(); 
    showDialog(); 

    return START_NOT_STICKY; 
} 

答えて

0

私はあなたがこれを処理するには、2つの選択肢があると思います。これは、すべての要求時間のリストを保持することによって行うことができ、新しいものが既存のものと衝突する場合、X秒だけ遅延させます(この実装では、衝突がないことは保証されませんが、 )。

2)前のダイアログが閉じられるまで、新しいダイアログの表示を延期します。これを実装するには、ダイアログとサービスが通信する必要があります。新しいメッセージが保留されているときにダイアログに通知する必要があるため、古いダイアログが閉じられたときに表示されます。&ダイアログが消去されたときにサービスに通知する必要があるため、新しいメッセージが要求された場合。

関連する問題