Android之Activity生命周期
Activity类的七个回调方法,覆盖了活动生命周期的每一个环节。
1.onCreate()————————初始化操作,活动第一次被创建时调用,它是生命周期第一个调用的方法,我们在创建Activity时一般都需要重写该方法,然后在该方法中做一些初始化的操作,如通过setContentView设置界面布局的资源、初始化所需要的组件信息、绑定监听事情等。
2.onStart()—————————启动操作,活动由不可见变为可见时调用,此时Activity已处于可见状态,只是还没有在前台显示,此时Activity已显示而我们无法看见,无法交互。
3.onResume()————————交互操作,活动准备与用户交互时调用,Activity已在前台可见,可与用户交互了,当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,可以在onResume方法中初始化一些资源,如重新初始化在onPause或者onStop方法中释放的资源。
4.onPause()—————————暂停操作,系统准备启动或恢复另一个活动时调用,一般情况下onStop方法会紧接着被回调。但是当用户操作使当前Activity退居后台后又迅速地再回到到当前的Activity,此时执行onPause方法后onResume方法就会被回调。在onPause方法中我们可以做一些数据存储或者动画停止或者资源回收的操作,但是不能太耗时,因为这可能会影响到新的Activity的显示——onPause方法执行完成后,新Activity的onResume方法才会被执行。
5.onStop()——————————停止操作,活动完全不可见的时候调用,一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作(不能太耗时)。
6.onDestroy()————————回收操作,活动被销毁之前调用,也是生命周期最后一个执行的方法,一般我们可以在此方法中做一些回收工作和最终的资源释放
7.onRestart()————————重启操作,活动由停止变为运行状态之前调用 ,当Activity由不可见变为可见状态时,该方法被回调。这种情况一般是用户打开了一个新的Activity时,当前的Activity就会被暂停(onPause和onStop被执行了),接着又回到当前Activity页面时,onRestart方法就会被回调。
点击Home键回到主界面后,再次点击App回到Activity时–>onRestart()–>onStart()–>onResume()依次被调用;
点击Back键回退时,相当于退出了当前Activity,Activity将被销毁,因此 退出当前Activity时–>onPause()–>onStop()–>onDestroy()依次被调用。假设:先启动Activity A->在Activity A中启动Activity B->按Back键按Back键时的生命周期为B.onPause()->A.onRestart->A.onStart->A.onResume-> B.onStop->B.onDestroy;
灭屏时,onPause()和onStop()会依次被调用;屏亮时,onRestart(),onStart(),onResume()会依次被调用。
1)启动Activity
onCreate() —> onStart() —> onResume()
2)按Home键回到桌面 / 锁屏
onPause() —> onStop()
3)从桌面回到Activity / 解锁
onRestart() —> onStart() —> onResume()
4)跳转新Activity
A:onPause() —> onStop()
B:onCreate() —> onStart() —> onResume()
A —> B:onPause()_A —> onCreate()_B —> onStart()_B —> onResume()_B —> onStop()_A
5)返回上一个Activity
B:onPause() —> onStop() —> onDestroy()
A:onRestart() —> onStart() —> onResume()
B —> A:onPause()_B —> onRestart()_A —> onStart()_A —> onResume()_A —> onStop()_B —> onDestroy()_B
6)退出Activity
onPause() —> onStop() —> onDestroy()