使用MapActivity时出现奇怪的活动堆栈行为

时间:2010-04-23 11:43:04

标签: android android-activity android-mapview

我的应用程序中有以下活动结构

当应用程序启动时,会启动一个简单的“启动画面”活动(我们称之为“启动”)。当用户按下按钮时,此活动将启动主要活动(我将其称为“Main”)。

Main可以从菜单中启动两个活动。第一个活动呈现一个简单的形式(让我们称之为“形式”),第二个活动是一个呈现地图的MapActivity(它被称为“地图”)。

Main,Form和Map在清单中声明完全相同:

<activity android:name="fully qualified activity class"
        android:screenOrientation="landscape"
     android:configChanges="keyboard|keyboardHidden|orientation"
    >
    <intent-filter>
        <action android:name="android.intent.action.DEFAULT" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

当Main处于活动状态时,我启动Form并按“Back”,Main再次出现。再次按“返回”会显示“启动”。这里没什么奇怪的。

现在出现了一个奇怪的部分:当我在Main时,启动Map,然后按“back”,Main按预期出现。但再次按下“返回”只会重新启动Main。需要第二次按“返回”才能让我回到Splash!

所以看起来启动Map活动会以某种方式导致Main在活动堆栈上结束两次,而启动Form活动却没有!

Form和Map都是这样开始的:

startActivity(new Intent(this, MyActivity.class));

我没有抓住任何活动中的后退键。

有关正在发生的事情或如何调试此事的任何线索?

1 个答案:

答案 0 :(得分:0)

我想我之前在其中一个项目中看到了这种行为。尝试将启动器活动的启动模式属性(在您的情况下为Splash)设置为清单文件中的 - android:launchMode =“singleTask”。

这应该有助于澄清:http://developer.android.com/guide/topics/fundamentals.html#acttask