从Service启动同一Activity的多个实例

时间:2011-09-30 13:40:20

标签: android android-manifest android-intent android-activity

我想从Activity启动同一个Service类的多个实例。我这样做的原因是因为我每天都有一个Service运行“扫描”,如果发现任何故障,它应该为每个故障显示一个弹出窗口。

我正在启动的Activity更像是Dialog,有一个Dialog theme来显示有关故障的信息。

Manfiest:

<activity
   android:name=".ui.dialogs.MalfunctionActivity"
   android:theme="@style/MyDialog"
   android:launchMode="standard">

意图从Service启动活动:

    Intent displayMalf=new Intent(this, MalfunctionActivity.class);
    displayMalf.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(displayMalf);

问题:Activity开始Service我需要FLAG_ACTIVITY_NEW_TASK以某种方式取消清单中的launchMode="standard",并给出即使我尝试启动多个不同的实例,我只有一个Activity。 无论如何我能做到这一点吗?

3 个答案:

答案 0 :(得分:6)

这很简单。根据文档中有标志FLAG_ACTIVITY_MULTIPLE_TASK

  

与FLAG_ACTIVITY_NEW_TASK结合使用可禁用将现有任务置于前台的行为。设置后,始终会启动一个新任务来托管Intent的Activity,无论是否已有任务运行相同的任务。

正是我需要的。谢谢,很抱歉回答我的问题。这不是一种习惯。 :)

答案 1 :(得分:2)

服务将使用标记FLAG_ACTIVITY_NEW_TASK来启动活动,但您可以尝试这样:

  1. 在服务中设置您想要多个实例的活动的instance of the handler

  2. 如果您希望新活动实例使用handler.sendMessage(msg)并在活动中收到此消息,请再次开始此活动。

答案 2 :(得分:0)

我猜你的应用程序在后台工作,即使应用程序暂时不在前台,也会显示弹出窗口,对吗?

否则我会使用普通弹出窗口(AlertViews)而不是一直开始新活动。

如果应用程序在后台运行,您可以告诉用户第一个弹出窗口,您的应用程序发现了一个或多个故障,并且他应该激活应用程序以获取更多详细信息

相关问题