从服务弹出对话框也会弹出主要活动

时间:2013-07-03 21:44:56

标签: android-intent

我正在开发一个有三种上下文的应用程序:

所有MainActivity都是启动和停止MonitorService,并显示一些用户指令。

MonitorService已注册以接收铃声音量的变化,如果它检测到音量变化,则会弹出ConfirmActivity。

ConfirmActivity在DialogFragment中弹出一个AlertDialog,询问是否有意改变音量,如果用户没有确认更改,则重置音量。

我看到的问题是,如果MainActivity处于Stopped状态,则当ConfirmActivity启动时,MainActivity也会重新启动并恢复。取消对话框后,MainActivity仍然可见。我发现这出乎意料而且令人不安。如果MainActivity已被销毁,则ConfirmActivity将按预期工作。

任何人都可以了解为什么启动ConfirmActivity还会重新启动MainActivity吗?

1 个答案:

答案 0 :(得分:0)

Android会跟踪您的应用的哪些活动按照什么顺序使用,当应用程序到达前台时,它会带来所有这些活动,因此如果您打开了一个MainActivity,用户导航离开,然后你创建了一个ConfirmActivity,MainActivity将在ConfirmActivity之后。

要解决此问题,请查看开始活动时可在Intent中指定的标志。有几个会影响活动堆栈的处理方式;我想你可能想用FLAG_ACTIVITY_CLEAR_TASK