我想从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
。
无论如何我能做到这一点吗?
答案 0 :(得分:6)
这很简单。根据文档中有标志FLAG_ACTIVITY_MULTIPLE_TASK
:
与FLAG_ACTIVITY_NEW_TASK结合使用可禁用将现有任务置于前台的行为。设置后,始终会启动一个新任务来托管Intent的Activity,无论是否已有任务运行相同的任务。
正是我需要的。谢谢,很抱歉回答我的问题。这不是一种习惯。 :)
答案 1 :(得分:2)
服务将使用标记FLAG_ACTIVITY_NEW_TASK
来启动活动,但您可以尝试这样:
在服务中设置您想要多个实例的活动的instance of the handler
。
如果您希望新活动实例使用handler.sendMessage(msg)
并在活动中收到此消息,请再次开始此活动。
答案 2 :(得分:0)
我猜你的应用程序在后台工作,即使应用程序暂时不在前台,也会显示弹出窗口,对吗?
否则我会使用普通弹出窗口(AlertViews)而不是一直开始新活动。
如果应用程序在后台运行,您可以告诉用户第一个弹出窗口,您的应用程序发现了一个或多个故障,并且他应该激活应用程序以获取更多详细信息