我有一个在后台运行的服务,然后由一个动作触发它 当活动接收到此广播时向活动发送广播显示对话框,问题是当服务被触发两三次等时间活动同时显示三个对话框(对话框3位于顶部)对话框1顶部的对话框2)我需要对话框出现在它们被触发的相同顺序上(对话框2位于对话框2顶部,对话框3)
答案 0 :(得分:0)
你最好停止显示第二个和第三个对话框,直到第一个完成。你可以通过以下某些条件来做到这一点:(更像是一个psudo代码)
public void processBroadcast(BroadcastModel broadcastModel)
{
if(!Const.isAnyDialogShowing)
{
CustomDialog dialog=new CustomDialog(broadcastModel);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Const.isAnyDialogShowing = false;
if(broadcastList.size > 0)
{
broadcastModel newBroadcastModel = broadcastList.remove(0);
processBroadcast(newBroadcastModel);
}
}
});
Const.isAnyDialogShowing = true;
dialog.Show();
}
else
{
broadcastList.add(broadcastModel);
}
}
通过这种方式,它们将以您想要的相同顺序显示。