【问题标题】:How to check if the same intent was already started?如何检查是否已经开始了相同的意图?
【发布时间】:2014-08-04 13:05:14
【问题描述】:

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

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

问候!

【问题讨论】:

  • 您应该做的是在 ParentActivity 中保存该 DialogActivity 的实例,并在收到通知时检查 DialogActivity 是否为空。例如如果(mDialogActivity == null)。或者,您可以使用一个布尔值来检查 Activity 是否正在运行: static boolean isActive = false;并在 onStart/onStop 方法中将其设置为 true/false。
  • 那么,如果有两个对话框,你想只显示第一个对话框吗?
  • 您的显示是从当前正在运行的活动中发生的,还是由正在运行的线程显示的?
  • 当按下 OK 时,对话意图关闭并将“消息”传递给第三个“结果”活动。我需要创建一个条件,例如:“如果启动了相同的活动(带有另一条消息的较早对话框)“不要启动第三个活动,只需关闭当前对话框”,然后在阅读完所有消息后,按确定启动显示我所有消息的第三个活动。@MuhammedRefaat

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


【解决方案1】:

您可以创建一个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
           }

        }

    };

【讨论】:

  • 如果您需要任何澄清,请告诉我
【解决方案2】:

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

示例:

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

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

public static boolean isActive = false;

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

然后,您可以检查 Activity 是否像这样运行:

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

【讨论】:

  • 因为我在新消息到达时调用相同的活动(对话框),所以 mDialogActivity 始终为 true。我无法检查布尔值。 :( 我可以尝试使用 pref 文件,在 onCreate 时将变量设置为“true”,在活动完成时将变量设置为“false”。
猜你喜欢
  • 2014-01-26
  • 2011-09-09
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
相关资源
最近更新 更多