如何防止两个不同的警报警报对话框同时由两个具有不同请求代码的待处理意图触发



在创建具有多个警报的警报应用程序时,我使用具有不同请求代码的待定意图和警报服务来显示对话框。在此期间,甚至在第一个对话框被暂停或关闭之前,第二个对话框就会弹出。我怎样才能防止这种情况。

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

我认为您有两种选择来处理这个问题:

1)确保不会同时发生不同的请求。这可以通过保存所有请求时间的列表来完成,如果一个新的请求与现有的请求发生冲突,只需将其延迟 X 秒(使用此实现,您不能保证没有冲突,但它们的机会会降低)。

2) 推迟显示新对话框,直到关闭上一个对话框。若要实现此目的,对话和服务需要通信。当新消息挂起时,需要通知对话框,以便在关闭旧对话框时显示它,并且在清除对话框时需要通知服务,以便它知道如果请求新消息,它可以显示。

相关内容

  • 没有找到相关文章

最新更新