2

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

假设我有一个包含一个活动和一些片段的应用程序。这个应用程序通过一个静态广播接收器启动,其意图是 ACTION_POWER_CONNECTED。到目前为止,我的实现一切都很好。

但是有一个行为不端,我不知道如何正确解决。

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

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

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

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

4

2 回答 2

2

在清单文件中的活动标记中设置android:launchMode="singleTask" 并重试...

如果您的活动已经在运行,则不要使用上面的标签创建新活动,它的显示旧运行活动..

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

谢谢

于 2012-09-13T10:08:50.750 回答
1

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

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

于 2012-09-13T10:09:48.650 回答