3

所以我有一个定义在 AndroidManifest.xml 中的 Activity A,定义如下:

<activity
        android:name=".activity.A"
        android:screenOrientation="landscape"
        android:windowSoftInputMode="stateAlwaysHidden"
        android:launchMode="singleTask">

      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

</activity>

此活动启动一个欢迎屏幕,我们将其称为活动 B。

如果您启动应用程序,将显示欢迎屏幕,然后一旦用户完成它,活动 A 就会返回。

我遇到的问题是,当我从欢迎屏幕按下“主页”按钮时,我会按预期返回主屏幕。现在,当我重新单击应用程序图标时,应用程序将不会启动。相反,我的活动 A 和 B 都被破坏了。如果我再次单击该图标,则应用程序将按预期重新启动。

现在,如果我在欢迎屏幕上并按下后退箭头并重新单击应用程序图标,它会按预期启动应用程序。我不必推两次。

不幸的是,我必须使用 launchMode="singleTask" 因为它是与另一个团队集成的要求。我已经多次阅读 Android API 的 Tasks 和 Back Stacks。任何指针或建议将不胜感激。

我遇到了一个博客,表明同时使用 singleTask 和意图过滤器存在一个未记录的错误,但没有找到任何官方文档。

谢谢

像这样编辑启动活动 B:

Intent intent = new Intent(context, B.class);
startActivityForResult(intent, CONST_VAR);
4

1 回答 1

0

我尝试制作两个从 Activity A 启动 ActivityB 的活动。我没有看到问题中描述的这样的问题。PFB 我的清单。另外,当您说主页按钮时,它是电话主页按钮还是您的应用程序特定主页按钮。PFB 我的清单

     <activity
        android:name="com.android.testsingletask.MainActivity"
        android:launchMode="singleTask"
        android:screenOrientation="landscape"
        android:windowSoftInputMode="stateAlwaysHidden"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

     <activity
        android:name="com.android.testsingletask.WelcomeActivity"
         android:screenOrientation="landscape"
        android:windowSoftInputMode="stateAlwaysHidden"
        android:label="@string/app_name" >
    </activity>
于 2014-04-07T10:38:51.033 回答