2

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

现在,只要有来电,我的活动对话框就会弹出并按预期显示。

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

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

4

3 回答 3

3

谷歌文档说:

FLAG_ACTIVITY_NEW_TASK

“使用此标志时,如果您现在正在启动的 Activity 的任务已经在运行,则不会启动新的 Activity;相反,当前任务将简单地以上次的状态被带到屏幕的前面在。”

所以,如果你想开始一个新的活动,那么就不要只使用这个标志,你应该将它与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:launchModeactivity属性,在文件标记中使用所需选项(即根据您的需要)声明此属性manifest

希望这能解决问题。

于 2013-01-15T17:08:03.397 回答
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 一起使用将导致每个活动实例被创建为单独的任务,因此您可以弹出不同的对话框。

于 2013-04-02T12:13:33.167 回答
2

只需将以下标志添加到您的Intent.

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
            | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
于 2014-12-01T13:45:28.963 回答