Android日记之2011\12\27

今天在做项目的时候发现了一个问题,就是Android通过Intent来跳转Activity。其实这是一个很简单的东西,先实例化一个Intent,再通过startActivity来跳转Activity。但是,如果只是简单的来new一个Intent,那就会带来一个问题就是通过返回按钮来返回的时候,会重复出现已经不用的Activity。举个例子,Activity A通过3个按钮可以分别跳转到Activity B、C、D,当我从A跳转到B,再由B通过Intent来跳转到A,再由A跳转到C,C通过Intent回到A,D也同理,等我们再来按返回键的时候,会发现途中会再经过B、C,这是因为Intent把Activity压入了一个堆栈中,按照刚才的做法,此时堆栈中的顺序就是ABACAD,所以,通过Android设备上的返回键返回的时候,经过的就是DACABA,这样给整个应用的体验就带来了不便。
所以说,在做Activity的返回效果的时候,就不要取用Intent来跳回去,可以直接直接用onBackProcessed()这个方法,直接实现的就是返回键的效果,或者说如果非要用Intent来跳转的话,就好比说是A—》B—》C—》D,但是D想要不经过B、C回到A的话就只能用Intent,但是用Intent的话,又会带来前面所说到的问题,那可以在startActivity之前,加一个控制,调用Intent的setFlags,传入的参数是FLAG_ACTIVITY_CLEAR_TOP 。这样,在D跳转到A之前,系统就会先判断堆栈中是否有A,如果有,那就会把从D到A的所有Activity(包括D和A)都弹出堆栈,然后再在堆栈中新建一个Activity A。
最后再总结下finish()方法,一句话,它只能在Activity中使用,用于销毁当前的Activity。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值