不了解Activity堆栈?

时间:2009-12-03 03:51:49

标签: android

我在后台工作时遇到问题。我有两个活动,A和B.只有A可以启动B(清单复制在下面)。这就是我的工作:

  1. 从应用抽屉启动应用(活动A)
  2. A上有一个按钮可以启动B,现在显示B.
  3. 点击Home键,我的应用程序现在在后台。
  4. 再次转到应用抽屉,点击我的应用图标。
  5. 不再在ActivityB中恢复,而是再次启动活动A.为什么?
  6. 如果我现在点击后退键,我会看到旧的ActivityB。什么?
  7. 这非常令人困惑。这就像Android知道我的应用程序正在运行,并在运行的旧B实例之上放置一个新的A实例。我只是希望应用程序就地暂停,每当用户再次点击应用程序图标时,它就会从它停止的地方开始(在这种情况下,只需再次显示B!)以下是清单,并且此测试的活动类是完全空的(除了A,它有一个按钮来启动B)。

    <activity android:name=".ActivityA"
                  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=".ActivityB"
              android:label="@string/app_name">
            <intent-filter>
            <!-- 
                <action android:name="android.intent.action.VIEW" />
                 -->
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    

3 个答案:

答案 0 :(得分:2)

如果我不得不猜测,因为你的app抽屉里面是你的程序A的.apk参考。无论B是否已经启动,选择时应用程序的INTENT是启动程序A. / p>

我只在Android上阅读了一些内容,所以我不能100%肯定地说,但这是我的猜测。

我希望这会有所帮助。

编辑:

按住Android手机上的Home键,显示后台应用程序列表,您是否可以在模拟器内执行相同操作并查看程序B是否弹出?还是会出现同样的问题?

在阅读Google周围的内容后,我遇到了this这里有一个小片段:

  

任务中的所有活动都作为一个单元一起移动。整个任务(整个活动堆栈)可以被带到前台或发送到后台。例如,假设当前任务在其堆栈中有四个活动 - 在当前活动下有三个活动。用户按下HOME键,转到应用程序启动器,然后选择一个新应用程序(实际上是一个新任务)。当前任务进入后台,并显示新任务的根活动。然后,在短时间之后,用户返回主屏幕并再次选择先前的应用程序(前一个任务)。这个任务,包括堆栈中的所有四个活动,出现了。当用户按下BACK键时,屏幕不显示用户刚刚离开的活动(上一个任务的根活动)。而是删除堆栈顶部的活动,并显示同一任务中的先前活动。

我希望这能指出你正确的方向

答案 1 :(得分:1)

我遇到了这个错误:

http://code.google.com/p/android/issues/detail?id=2373#makechanges

感谢您的帮助,这一直令人困惑。

答案 2 :(得分:0)

您是否在活动的xml定义中设置了以下属性?

android:launchMode="singleTop"