【发布时间】:2011-07-19 10:17:32
【问题描述】:
我遇到了一个问题,即后台堆栈中存在多个活动实例。
例如
堆栈:A > B > C 按主页并使用其他一些应用程序然后重新启动我的应用程序 堆栈:A > B > C > A
我希望我的应用程序可以使用活动 C 恢复,在大多数情况下确实如此,但偶尔它会使用活动 A 恢复,然后当我按下返回时,它会转到活动 C。
我知道这个问题不是由 android 杀死我的应用程序引起的,就好像它会以活动 A 作为根目录恢复的情况一样。
我已经尝试将 launchMode 属性更改为 singleTask 和 singleInstance 但这会导致活动 A 被恢复为根,这不是我想要的行为,我希望它返回到先前查看的活动,并且返回堆栈完好无损(我知道如果操作系统杀死应用程序,这并不总是可能的,这很好)。
我不相信将 launchMode 属性设置为 singleTop 会有用,因为这会阻止 A > A 的情况,但不会阻止 A > B > A 或 A > B > C > A 等
清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=""
android:versionCode="1"
android:versionName="1.0"
android:installLocation="auto"
>
<application android:label="@string/app_name" android:debuggable="false"
android:name=""
android:icon="@drawable/icon" android:theme="@style/CustomTheme"
android:targetSdkVersion="8" android:minSdkVersion="4">
<activity android:name=".activity.A"
android:windowSoftInputMode="stateUnchanged|adjustPan"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity.B"
android:screenOrientation="portrait"/>
<activity android:name=".activity.C"
android:screenOrientation="portrait" />
<activity android:name=".activity.D"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name=".activity.E"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<service android:name=".service.S" />
<uses-library android:name="com.google.android.maps" />
</application>
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="8"
/>
<supports-screens
android:largeScreens="false"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"
/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
任何建议将不胜感激
大卫
【问题讨论】:
-
如何启动活动 A?它是主要活动/启动器活动吗?
-
是的,它是主要/启动器活动:
codecode -
其他活动是否会更改默认的 App Stack 行为?
-
不,他们没有指定任何非默认行为
-
你能发布 AndroidManifest.xml 吗?
标签: java android android-activity multiple-instances