活动的多个实例

时间:2013-01-15 16:34:23

标签: android android-activity

每当有来电时,我都会尝试在来电屏幕上显示用户信息。所以我有一个广播接收器监听来电,启动意向服务,随后启动一个活动(主题对话)。

现在,每当有来电时,我的活动对话框会弹出并按预期显示。

问题:当活动对话框已经在屏幕上并且传入呼叫发生时,没有新活动对话框包含新信息。我想只要有实例,Android就不会创建新实例。所以看起来我的问题是“创建一个活动的多个实例”。

请注意,我使用 FLAG_NEW_TASK 从意图服务开始活动。

3 个答案:

答案 0 :(得分:3)

Google Doc说:

FLAG_ACTIVITY_NEW_TASK

  

“使用此标志时,如果任务已在运行中运行   你现在开始,然后一个新的活动将不会开始;   相反,当前的任务将被简单地带到前面   屏幕显示它最后的状态。“

因此,如果您想开始新的新活动,则只是不使用此标记,您应该将其与FLAG_ACTIVITY_CLEAR_TASK一起用于所需的结果。

例如:

// Sets the Activity to start in a new, empty task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
        Intent.FLAG_ACTIVITY_CLEAR_TASK);

如果上述解决方案不是您所需要的,那么请看一下     android:launchMode属性,在activity文件的manifest标记中使用所需选项(即根据您的需要)声明此属性。

希望这能解决问题。

答案 1 :(得分:2)

根据文档使用标志FLAG_ACTIVITY_MULTIPLE_TASK:

Used in conjunction with FLAG_ACTIVITY_NEW_TASK to disable the behavior of bringing an existing task to the foreground. When set, a new task is always started to host the Activity for the Intent, regardless of whether there is already an existing task running the same thing.

将此标志与FLAG_ACTIVITY_NEW_TASK一起使用将导致每个活动实例作为单独的任务创建,因此您可以使用不同的对话框弹出窗口。

答案 2 :(得分:2)

只需将以下标记添加到Intent

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
            | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);