Android 用intent()和finish()返回上一层的区别

本文详细探讨了Android中两个Activity(A与B)的默认启动模式下,如何通过finish()结束B并返回A,以及各自生命周期的变化。重点在于理解B的onDestroy方法调用和A的onCreate是否会重新触发。
摘要由CSDN通过智能技术生成

突然遇到,记录一下

现在有A,B两个activity。这两个activity都没有设置启动模式,默认启动模式是:standard。那么这两个activity将存在同一个栈中。我从A进入B,然后现在需要返回A。我在A中的onCreate()方法中获取了全局类的参数x的值,期望是:在B中改变x的值,并且A重新获取。但是我没有 我只是finish结束了B

intent()

B.class

Intent intent = new Intent(this,A.class);  //从这个activity跳到 A activity
startActivity(intent);

栈中情况如下:
在这里插入图片描述

虽然是返回了上一次层的界面,但是按返回键的时候又会回到B,再按返回键又到A,再按一次才能退出。
返回上一页A和B的生命周期是: B:onPause() -> A:onCreate() -> A:onStart() -> A:onResume() -> B:onStop()

使用intent返回上一层,A走了onCreate方法,B没有销毁

finish()

finish(); //结束当前activity

没有任何花里胡哨,就是直接让B出栈,然后A到栈顶

生命周期:B:onPause()->A:onRestart()->A:onStart()->A:onResume()->B:onStop()->B:onDestroy()
由此可见,使用finish返回上一层,A没有经过onCreate方法,并且B执行了onDestroy方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值