0

我正在开发一个运行具有基本 UI 和服务的应用程序,可以接收紧急情况。如果用户在 UI 中并按下 home 或 Back,则会出现通知并且服务会继续运行。如果服务收到紧急情况,我想在 UI 中打开 Activity。为此,我必须在服务中使用带有 Intent 标志 FLAG_ACTIVITY_NEW_TASK 的 startActivity。

但这意味着,如果 UI 仍在后台运行,则不会重新打开。从那时起,我的许多 UI 交互似乎都发生在旧的隐藏 UI 上,而不是打开的新 UI。此外,如果我关闭当前的 UI,我有时会在它后面有旧的 UI。

我希望通过一项服务,我可以将旧的 ui 放在前面,也可以打开一个新的,这取决于旧的 UI 是否仍在运行。

我曾尝试同时使用 FLAG_ACTIVITY_CLEAR_TASK 和 FLAG_ACTIVITY_NEW_TASK 来清除 UI 的任何其他实例,然后在新任务中打开 UI,但 CLEAR_TASK 是 API 11 及以上;我的应用程序支持 10。

对上述任何帮助表示赞赏。

4

2 回答 2

1

我所做的是bindService在 Activity中做一个onResume(这样你就得到了实例Service),然后将一个方法添加到从. 在您将on设置为空。这样就知道(通过检查其内部实例)是否已经有可用的 UI。如果有,它会发送事件发生的消息。如果没有,它会启动一个新的 UI。ServiceHandlerActivityonPauseHandlerServiceServiceHandlerHandlerMessageHandler

于 2013-06-21T15:59:27.607 回答
0

您可以尝试在清单文件中选择启动模式“singleTask”:

<activity
    android:name=".MainActivity"
    android:launchMode="singleTask" >

使用“singleTask”启动模式,您的活动只会被实例化一次。

于 2013-06-21T15:59:00.213 回答