我试图在传入呼叫时显示来电屏幕上的用户信息。因此,我有一个广播接收机收听来电,它启动意向服务,随后启动一个活动(,主题对话框为)。活动的多个实例
现在,只要有来电,我的活动对话框就会弹出并按预期显示。
问题:当活动对话框已经在屏幕上并发生传入呼叫时,没有新的活动对话框和新信息。我想,无论何时出现实例,Android都不会创建新的实例。所以看起来我的问题是“创建活动的多个实例”。
请注意,我正在使用FLAG_NEW_TASK从意向服务开始活动。
我试图在传入呼叫时显示来电屏幕上的用户信息。因此,我有一个广播接收机收听来电,它启动意向服务,随后启动一个活动(,主题对话框为)。活动的多个实例
现在,只要有来电,我的活动对话框就会弹出并按预期显示。
问题:当活动对话框已经在屏幕上并发生传入呼叫时,没有新的活动对话框和新信息。我想,无论何时出现实例,Android都不会创建新的实例。所以看起来我的问题是“创建活动的多个实例”。
请注意,我正在使用FLAG_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
文件。
希望这能解决问题。其中根据文档
不工作,它只是更新屏幕上的当前活动。 –
解答已更新。 –
如果仍然无法正常工作,则可能需要在startActivity(intent)之前调用finish()。 –
使用标志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一起使用此标志将导致作为单独的任务创建的每个活动实例,因此,你可以有不同的对话框弹出窗口。
只需将下列标志添加到您的Intent
。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
你是在谈论一个Activity或一个应用程序,因为在Android上,一个应用程序只能同时运行一次。 – Nickolaus
@Nickolaus:主题为Dialog的活动。 –