突然遇到,记录一下
现在有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方法