这边博客简单介绍一下Android下Activity的生命周期,主要介绍在整个Activity中各个回调方法调用的时机。
- onCreate():Activity被创建时调用;
- onStart():当Activity变得可见时调用此方法;
- onResume():Activity正在与用户进行交互时或者说界面获取焦点时调用;
- onPause():Activity不能与用户进行交互或者说界面失去焦点是调用;
- onStop():当Activity对应页面变得不可见时调用;
- onDestory():Activity销毁时调用;
- onRestart():当Activity由不可见变得可见时(换言之,由后台转前台或者说由非栈顶转到栈顶),调用此方法,紧接着调用onStart()和onResume()方法;
- onSaveInstanceState():只有在activity可能被系统回收时才会被调用,只要是为了避免数据丢失,用于保存和恢复数据,注意是可能,当activity确定要被销毁时,如用户按下返回键,或者在activity内调用finish()方法时,不会调用此方法。且此方法调用顺序是在onPause()后,onStop()前。
一般以下四种情况将会调用此方法:
1、当用户按下HOME键时。
2、从最近应用中选择运行其他的程序时。
3、按下电源按键(关闭屏幕显示)时。
4、从当前activity启动一个新的activity时。
注意:- 下面一句是Android官方文档中的原话,感觉描述的很好:If it is a new instance of the covered activity that comes to the background, the system does not call onRestart(), only calling onStart() and onResume(). 举例来说,假设原本activity A处于前台并与用户进行交互,现在用户启动了activity B,那么A将转入后台并执行onPause()和onStop()方法,此时,如果在B中开启一个A的新实例,那么此时对于这个新实例来说,其只会执行onStart()和onResume方法。
- 当APP进行横竖屏切换时,旧的activity执行onPause()—onStop()----onDestory()-----onCreate(),接着新的activity执行onStart()-----onResume()
即进行一次横竖屏切换,activity实际进行了一次重启; - 注意onStart()方法和onResume()方法调用时机的区别,即Activity可见和可交互的区别,主要有两种典型情况:一是Activity中当前单弹出一个Dialog;二是Acitivity被一个透明的FrameLayout覆盖;