服务和启动/重新启动活动

时间:2013-06-21 15:54:18

标签: android service android-activity

我正在开发一个运行的应用程序,它具有可以接收紧急情况的基本UI和服务。如果用户在UI中并按下主页或返回,则会显示通知并继续运行服务。如果服务收到紧急情况,我想将活动打开到用户界面。为此,我必须在服务中使用带有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。

对此有任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

我对此做的是在活动的bindService中执行onResume(以便获取Service实例),然后向Service添加方法从Handler接收Activity实例的实例。在onPause中,您将Handler上的Service设置为null。这样Service知道(通过检查其内部Handler实例)是否已有可用的UI。如果有,它会发送事件发生的Handler Message。如果没有Handler,则会启动新的用户界面。

答案 1 :(得分:0)

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

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

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

相关问题