【问题标题】:How can I prevent two different alarm alert dialog that are triggered by two pending intents with different request code at same time如何防止两个不同的警报警报对话框同时由具有不同请求代码的两个待处理意图触发
【发布时间】:2017-01-12 16:18:26
【问题描述】:

在创建具有多个警报的警报应用程序时,我正在使用具有不同请求代码的 PendingIntent 和 AlarmService 来显示对话框。在此期间,即使在第一个对话框被暂停或关闭之前,第二个对话框也会弹出。我该如何防止这种情况发生。

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

【问题讨论】:

    标签: android android-service alarmmanager android-pendingintent android-alarms


    【解决方案1】:

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

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

    2) 推迟新对话框的显示,直到前一个对话框被关闭。要实现这一点,您的对话和服务需要进行通信。当有新消息挂起时需要通知对话框,以便在关闭旧对话框时显示它,并且在清除对话框时需要通知服务,以便它知道如果请求新消息,它可以显示.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多