Android 在Activity中调用finish()方法,会走哪些生命周期方法?
2018-01-23 12:43
477 查看
看标题问题,你可能会想:这还不简单,在程序中调用finish(),Activity会继续调用onPause()、onStop()、onDestroy()方法。
其实错了,有坑。
1、在Activity的onCreate()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onDestroy()
2、在Activity的onStart()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onStart() -> onStop() -> onDestroy()
3、在Activity的onResume()或onPostResume()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onStart() -> onResume() -> onPostResume() -> onPause() -> onStop() -> onDestroy()
其他方法可以正常执行。
了解这些是很有必要的。比喻我们项目中的一个场景:
启动app都会走LogoActivity页面,执行预处理操作,然后进入到MainActivity页面。
于是我在LogoActivity中做网络请求获取数据,在onPause()方法中设置app皮肤。
然而,发现另一个分支从onCreate()里面就调走了,而且调用了finish()方法。让我郁闷的是为什么不走onPause()方法呢?
其实就是上面的生命周期方法问题导致的。
其实错了,有坑。
1、在Activity的onCreate()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onDestroy()
2、在Activity的onStart()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onStart() -> onStop() -> onDestroy()
3、在Activity的onResume()或onPostResume()中调用finish()方法,则执行的生命周期方法顺序为:
onCreate() -> onStart() -> onResume() -> onPostResume() -> onPause() -> onStop() -> onDestroy()
其他方法可以正常执行。
了解这些是很有必要的。比喻我们项目中的一个场景:
启动app都会走LogoActivity页面,执行预处理操作,然后进入到MainActivity页面。
于是我在LogoActivity中做网络请求获取数据,在onPause()方法中设置app皮肤。
然而,发现另一个分支从onCreate()里面就调走了,而且调用了finish()方法。让我郁闷的是为什么不走onPause()方法呢?
其实就是上面的生命周期方法问题导致的。
相关文章推荐
- Android关于 手机返回键和代码finish()方法退出activity他们有什么区别;当activity使用共享动画时应该调用哪个方法,结束activity
- 面试问题 activity生命周期,当设备旋转时android生命周期方法的调用顺序
- Android之Activity界面跳转--生命周期方法调用顺序
- Activity生命周期方法调用finish后的不同表现
- 探究Android 关于Activity调用finish()方法后的内存释放情况
- Android多个Activity切换时其生命周期中的方法执行顺序
- android屏幕旋转时,Activity不重新调用onCreate的方法
- Android多个Activity切换时其生命周期中的方法执行顺序
- Android 一个Activity调用另一个Activity中的公有方法
- 多个Activity生命周期方法调用
- activity调用finish方法理解
- android 7个生命周期方法分别在4个阶段按一定的顺序进行调用
- Android中一个Activity多个intent-filter的调用方法
- Android锁屏后主Activity的onDestroy方法被调用导致黑屏问题解决方案
- android锁屏和finish()后activity生命周期的变化
- android开发 Activity的里面调用两次 setContentView方法
- Android中一个Activity多个intent-filter的调用方法
- Android在Adapter里面调用Activity的方法/变量
- Activity生命周期、各个方法的调用
- android生命周期和状态方法调用时间点