我遇到了一个问题,即在Backstack中存在多个活动实例。
e.g。
堆叠:A> B> C 按回家并使用其他一些应用程序然后重新启动我的应用程序 堆栈:A> B> C>甲
我希望我的应用程序能够继续使用活动C,在大多数情况下它会这样做,但有时它会以活动A恢复,然后当我按下它时会转到活动C.
我知道这个问题不是因为机器人杀了我的应用程序而造成的,就好像这是因为它会以活动A作为root恢复。
我已经尝试将launchMode属性更改为singleTask和singleInstance,但这会导致活动A被恢复为root,这不是我想要的行为,我希望它返回到先前查看的活动,并且后台堆栈完好无损(我知道如果操作系统杀死了应用程序,这并不总是可行的,这很好。)
我不相信将launchMode属性设置为singleTop会有用,因为这会阻止A>情况但不是A> B> A或A> B> C>等等
清单:
<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" />
非常感谢任何建议
大卫
答案 0 :(得分:1)
您正在寻找的行为是singleTask
的含义。
问题是,为什么恢复你的应用弹出回根。如果它只是由于系统正常工作的方式(例如,30分钟超时),并且你真的想要阻止它,你可以使用android:alwaysRetainTaskState="true"
。