每当有来电时,我都会尝试在来电屏幕上显示用户信息。所以我有一个广播接收器监听来电,启动意向服务,随后启动一个活动(主题对话)。
现在,每当有来电时,我的活动对话框会弹出并按预期显示。
问题:当活动对话框已经在屏幕上并且传入呼叫发生时,没有新活动对话框包含新信息。我想只要有实例,Android就不会创建新实例。所以看起来我的问题是“创建一个活动的多个实例”。
请注意,我使用 FLAG_NEW_TASK 从意图服务开始活动。
答案 0 :(得分:3)
Google Doc说:
“使用此标志时,如果任务已在运行中运行 你现在开始,然后一个新的活动将不会开始; 相反,当前的任务将被简单地带到前面 屏幕显示它最后的状态。“
因此,如果您想开始新的新活动,则只是不使用此标记,您应该将其与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);