如何检查是否已启动相同的意图?

时间:2014-08-04 13:05:14

标签: android android-intent android-activity dialog cloud

我创建了一个对话框活动,当我的应用程序从云端收到消息时会弹出,提示用户采取行动(按是/否)。但是如果同时有通知,则新的对话意图与第一个重叠,如果用户选择是/否,则启动第3个活动,第一个对话框丢失。

有没有办法检查我的对话意图是否已经开始?所以我可以在开始显示完整消息的第3个活动之前返回第一个对话框?

问候!

2 个答案:

答案 0 :(得分:0)

您应该做的是在ParentActivity中保存该DialogActivity的实例,并在收到通知时检查DialogActivity是否为null。

示例:

if(mDialogActivity == null){
     //toDo 
} 

或者,您可以使用一个布尔值来检查Activity是否正在运行:

public static boolean isActive = false;

在onStart / onStop方法中将其设置为true / false。

然后,您可以检查活动是否正在运行:

if(mDialogActivity != null && mDialogActivity.isActive){
    //toDo
{

答案 1 :(得分:0)

您可以创建一个static boolean,其中包含所有消息读取状态以及显示的对话框数的索引,因此,当该数字达到零时,boolean变为true,然后可以显示第三个活动:

public static boolean all_msg_read = true;
public static int msgs_num = 0;

// So, when a dialog displayed
public void display_dialog(){

  all_msg_read = false;
  msgs_num ++;

  // display the dialog
  // provide an onClickListener to the dialog buttons, let's suppose it's called button_pressed
}

public onClickListener button_pressed = new onClickListener(){
@Override
        public void onClick(View v) {

           // do whatever processing you want
           msgs_num --;
           if(msgs_num == 0){
              all_msg_read = true;
              // launch the 3rd activity
           }

        }

    };