Android多个Activity实例

时间:2011-07-19 10:17:32

标签: java android android-activity multiple-instances

我遇到了一个问题,即在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" />

非常感谢任何建议

大卫

1 个答案:

答案 0 :(得分:1)

您正在寻找的行为是singleTask的含义。

问题是,为什么恢复你的应用弹出回根。如果它只是由于系统正常工作的方式(例如,30分钟超时),并且你真的想要阻止它,你可以使用android:alwaysRetainTaskState="true"