用广播接收器重启主要活动?

时间:2012-09-13 10:03:51

标签: android broadcastreceiver

首先,我举一个简短的例子来解决我的问题。请记住,我的应用程序的通缉行为仅供我自己使用。

假设我有一个带有一个活动和一些片段的应用程序。这个应用程序通过静态广播接收器启动,其意图是例如ACTION_POWER_CONNECTED。到目前为止,我的实现完全没问题。

但是这是一个不可思议的行为,我不知道如何正确解决。

如果应用程序正在运行并且我再次打开usb,我将创建一个新的第二个活动实例,第一个实例仍在运行。只是为了说清楚:如果按下后退按钮,第二个消失,第一个实例显示他的UI。

我正在寻找一种方法来重启我的应用程序,如果它已经运行,并启动它,如果它没有运行。无需为任何类型的重用保存数据。

我尝试了标志FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_BROUGHT_TO_FRONT和FLAG_ACTIVITY_CLEAR_TOP的一些组合。但我认为这些对我来说是错误的。接下来尝试将显示中的Activity设置为singleInstance,以确保不会有第二个实例。没有取得很大的成功。

有人能给我一个例子来解决我的问题,比如我必须使用哪些标志?

2 个答案:

答案 0 :(得分:2)

在清单文件的活动代码中设置 android:launchMode =" singleTask" ,然后重试...

如果您的活动已在运行,则不会使用上面的标记创建新活动,以显示旧的运行活动..

您需要在旧的运行活动中更新UI或数据,然后使用在意图广播时调用的onResume方法...

由于

答案 1 :(得分:1)

您必须使用活动的launchMode属性(在Manifest中)。

使用singleTop或查看http://developer.android.com/guide/topics/manifest/activity-element.html#lmode了解详情