Activtity多層頁面跳轉,返回調用finish() 頁面重複

	最近寫的一個模塊 頁面返回重複  返回調用finish 和重寫Ondestroy  有一頁面返回需調用兩次finish();  最後發現是ACtivity啓動方式不好  修改爲android:launchMode="singleTask"  問題解決
業務邏輯:
跳轉C>A>B   返回B>A>C
跳轉C>A>D>E  返回E>D>>C  C頁面返回主頁面重複  
究其原因是   Activity默認啓動方式爲Standard 	
standard 模式:
如果有3個 Activity,Act1,Act2,Act3, 如果從Act1 啓動到Act2 ,在啓動到Act3,那麼Android 的任務棧(task stack)分別爲 Act1、Act2、Act3,Act3 在棧頂,如果此時按手機返回鍵,則需要返回3次才能返回到桌面(假設是從桌面啓動的demo),任務棧分銷燬掉 Act3,Act2,最後Act1 。
SingleTask 操作模式,一般和singleTop操作模式類似,如果他發現任務棧裏面已經有了要啓動的這個Activity,他會清空這個Activity所在的任務棧上面的所有Activiy,然後直接複用這個已經存在的Activity 。

代碼ACTIVITY
<activity
    android:name=".ui.A"
    android:alwaysRetainTaskState="true"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustUnspecified|stateHidden"/>
<activity
    android:name=".ui.B"
    android:alwaysRetainTaskState="true"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
    android:name=".ui.C"
    android:launchMode="singleTask"
    android:alwaysRetainTaskState="true"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustUnspecified|stateHidden" />

<activity
    android:name=".ui.D"
    android:alwaysRetainTaskState="true"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustUnspecified|stateHidden" />
<activity
    android:name=".ui.E"
    android:alwaysRetainTaskState="true"
    android:configChanges="keyboardHidden|orientation"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustUnspecified|stateHidden" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章