2011-07-19 61 views
2

我遇到了一個問題,即活動的多個實例存在於後臺堆棧中。Android的多個活動實例

例如

棧:A> B> C 按家庭和使用其他應用程序,然後重新啓動我的應用程序 棧:A> B> C> A

我希望我的應用程序恢復與活性C,這在大多數情況下它會,但偶爾它會恢復活動A,然後當我按回它去活動C.

我知道這個問題不是由Android殺死我的應用程序,因爲如果這是它會恢復的情況下活動A作爲根。

我嘗試將launchMode屬性更改爲singleTask和singleInstance,但這會導致活動A被恢復爲根,這不是我想要的行爲,我希望它回到之前查看過的活動和後臺堆棧完好無損(我明白這並不總是可能的,如果操作系統殺死應用程序,這很好)。

我不相信設置launchMode屬性singleTop將是有用的任一,因爲這會防止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" /> 

任何意見,將不勝感激

大衛

+0

你如何啓動活動A?它是主要的活動/啓動器活動嗎? – Mannaz

+0

是它的主要/啓動器活動:'code' 'code' – user648462

+0

其他任何活動是否會更改默認的App Stack行爲? – Mannaz

回答

1

您正在尋找的行爲是singleTask的意思。

問題是,爲什麼恢復你的應用程序回彈到根。如果只是由於系統工作的常用方式(例如,30分鐘超時),並且您確實想要防止這種情況發生,則可以使用android:alwaysRetainTaskState="true"