如何删除应用程序的多个实例

时间:2013-02-25 10:16:42

标签: android url android-intent android-activity

我创建了一个创建和收听自定义网址的应用。我的问题是应用程序的多个实例。例如,我创建了一个网址,并通过短信发送给我的朋友。之后我在我的应用程序中打开那个短信(包含url)。这将创建一个打开此URL的应用程序的新实例。我希望一次只能有一个实例。我将如何实现这一目标。

谢谢,

3 个答案:

答案 0 :(得分:3)

您可以在清单文件的android:launchMode=""标记中添加属性activity,并将其设置为以下之一:

  1. 标准:系统始终在其中创建活动的新实例 目标任务并将意图路由到它。
  2. singleTop :如果活动的实例已存在于顶部 对于目标任务,系统将意图路由到该实例 通过调用其onNewIntent()方法,而不是创建一个 活动的新实例。
  3. singleTask :系统在新任务的根目录下创建活动 并将意图路由到它。但是,如果是活动的实例 已存在,系统将意图路由到现有实例 通过调用它的onNewIntent()方法,而不是创建一个 新的。
  4. singleInstance :与singleTask相同,但系统没有 将任何其他活动启动到持有实例的任务中。该 活动始终是其任务的唯一成员。

答案 1 :(得分:2)

android:launchMode="singleTop"设置为 AndroidManifest.xml 中的活动,该活动会打开网址。例如:

<activity android:name="com.abc.MainActivity" android:label="app_name"
          android:launchMode="singleTop">

此外,如果您想捕获新的Intent,请在活动代码中覆盖以下方法:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);   //set new intent as current intent
}

答案 2 :(得分:0)

android:launchMode="singleTask"用于Activity中的AndroidManifest.xml。有关详细信息,请在LaunchMode of an Activity上查看此文档。