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" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值