2

При создании приложения аварийного сигнала с несколькими аварийными сигналами. Использую 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; 
} 

ответ

0

Я думаю, что у вас есть два варианта, чтобы справиться с этим:

1) Убедитесь, что другая просьба не будет происходить одновременно. Это можно сделать, удерживая список всех времен запроса, и если новый столкнулся с существующим, просто задержите его на X секунд (с этой реализацией вы не гарантируете, что столкновений нет, но их шанс уменьшается).

2) Отложите отображение нового диалогового окна до тех пор, пока не будет отклонено предыдущее диалоговое окно. Чтобы реализовать это, ваш диалог и служба должны общаться. Диалог должен быть уведомлен о том, что новое сообщение ожидает ответа, поэтому его можно отобразить при отклонении старого диалогового окна. & служба должна быть уведомлена, когда диалог очищен, чтобы он знал, что если запрашивается новое сообщение, оно может показать ,

Смежные вопросы