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" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章