打开文件时防止多个应用程序/活动实例

时间:2012-12-04 12:49:03

标签: android android-lifecycle

我有一项活动构成了我申请的基础。这是问题所在。

  • 我创建了一个名为Instance1的活动实例。
  • 然后我会通过导航回主菜单将我的活动发送到后台。在onPause上调用onStopInstance1
  • 然后我导航到Gmail并打开电子邮件附件。
  • 这会创建我的活动'Instance2`的新实例(我知道这是因为我记录了实例是什么)。我现在在活动中所做的任何事情都在这个新实例中。
  • 如果我然后导航到gmail,onDestroy就会调用Instance2,如果我通过触摸图标打开我的应用程序,则会调用原始Instance1 onRestart

以下是我的manifest.xml

中的意图过滤器
<intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" />
                <data android:pathPattern=".*\\.dog" />
</intent-filter>

我还在清单文件中的Applications标签中添加了以下内容,但它没有效果。

android:launchMode="singleTask"

问题

为什么它不能意识到有一个实例正在运行并打开它?

ADDITION

我使用了singleInstance并将其移动到我的Activity标签中。但是,现在我无法获取我的电子邮件附件数据?以前我使用过以下内容。

Intent intent = getIntent();

        if (intent != null) {
            Log.d("MainActivity","Intent not null");
            Uri u = intent.getData();
            if (u != null) {
                Log.d("MainActivity","URI not null");

1 个答案:

答案 0 :(得分:1)

launchMode标记是<activity>元素的一部分,而不是应用程序元素。

您应该使用singleTop重新使用现有活动。