Android - 如果启动但暂停,则调用StartActivity而不导航到它

时间:2013-07-15 21:39:39

标签: android android-intent android-activity

我有一个在ActivityA上调用StartActivity的前台服务。如果ActivityA不在前台,则会向用户显示。如果Activity位于前台,则服务仍会调用StartActivity,并且活动会收到新的Intent并相应地更新自身。

用户可以与ActivityA交互,ActivityA将ActivityB显示为弹出窗口(Theme.Dialog),在此期间ActivityA暂停。现在,如果服务检测到另一个事件,它会再次调用StartActivity。但这一次,我不想导航到ActivityA。我希望用户仍然可以看到ActivityB弹出窗口并让ActivityA在后台更新。

是否有任何标志可以添加到服务启动的意图中,这会阻止导航到ActivityA(如果它已启动但已暂停?)

其他信息:
1. 如果我有ActivityA将ActivityB带回前台,ActiviyB最终会闪烁,看起来不太好。
2. 让服务使用ActivityManager来确定是否显示ActivityB。如果是,则广播ActivityA将要监听的意图并强制它更新,而不是调用StartService。但是,这将服务与两个活动相结合,需要更多编码,并将迫使我将服务调用同步到主线程以避免计时问题。

我真的希望有一些简单的事情,比如在意图上设置一些标志。或者在ActivityA中捕获intent,更新活动,但取消意图以阻止屏幕导航。

有什么建议吗?

注意:未使用Android通知栏。了解不建议从服务开始活动。我们对此有特殊要求。

2 个答案:

答案 0 :(得分:0)

听起来您可能希望使用java.util.concurrent.atomic中的AtomicReference传递正确的意图来启动活动。我实际上没有试过这个,但它可能是一个很好的起点。

答案 1 :(得分:0)

是的,你可以,如果你绑定你的服务.. call bindService(mConn);在你的activity和unBindService(mConn)的onResume()中;在onPause()..并且在你的服务类中,@ Overver onUnUnind()方法,你可以在那里设置标志。

我希望它很有用。