1

我的应用有两个活动,ActivityA 和 ActivityB。它们在下面的 AndroidManifest 中指定:

<activity android:name=".ActivityA" android:label="@string/app_name" android:screenOrientation="landscape" 
    android:configChanges="orientation|keyboardHidden|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>
<activity android:name=".ActivityB" 
    android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize" 
    android:windowSoftInputMode="stateAlwaysHidden"/>

问题的场景如下。

  1. 我启动应用程序并显示 ActivityA。
  2. 从 ActivityA,我启动 ActivityB 并关闭 ActivityA。现在任务栈只包含ActivityB。
  3. 我按下主页按钮,然后手机进入主屏幕。
  4. 我长按主页按钮,然后从历史记录中选择我的应用程序。
  5. 第4步之后,ActivityA启动并显示,任务栈顶部有ActivityA,底部有ActivityB。

我在第 5 步很困惑。我期望的是,应用程序将以其现有的任务堆栈被带到前台,即任务堆栈中只有 ActivityB。为什么Android在第5步启动ActivityA?

顺便说一句,客户端日志在第 5 步包含以下消息:

10-26 21:29:04.070 V/HtcAppUsageStats(275):(启动应用程序,包):(MyApp,com.example.myapp)

10-26 21:29:04.070 I/ActivityManager(275):开始活动:Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x34500000 cmp=com.example.myapp /.ActivityA bnds=[0,566][540,662](有附加功能)} 来自 pid 275

感谢您的任何建议!

4

2 回答 2

1

啊,我看到了这个 Android 错误,http://code.google.com/p/android/issues/detail ?id=26658 。这似乎是根本原因。

于 2012-10-29T21:01:22.570 回答
0

好的,所以如果你想让一个 Activity 不显示在长按主页按钮上:

  1. 开始该活动intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);

  2. 在该活动的 android Manifest 中android:excludeFromRecents="true"

您也可以点击此链接这应该可以解决您的问题!

于 2013-05-30T07:27:51.237 回答