0

我有一个在 ActivityA 上调用 StartActivity 的前台服务。如果 ActivityA 不在前台,则显示给用户。如果 Activity 在前台,服务仍然调用 StartActivity,Activity 接收到一个新的 Intent 并相应地更新自己。

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

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

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

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

有什么建议么?

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

4

2 回答 2

0

是的,你可以,如果你正在绑定你的服务..调用 bindService(mConn); 在您的活动的 onResume() 和 unBindService(mConn) 中;在 onPause()..And 在您的服务类中,@Override onUnbind() 方法,您可以在那里设置标志。

我希望它有用。

于 2013-07-16T18:00:55.843 回答
0

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

于 2013-07-16T17:51:58.843 回答