Activity作为 Android四大组件之一,应用非常广泛。有一系列的生命周期回调函数。
1、onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(可以在此方法中执行所有正常的静态设置 ,比如:创建视图、将数据绑定到列表等等。)
2、onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法,当然这种情况比较极端。
3、onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。
4、onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用5、onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。
6、onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。
7、onDestroy:在 Activity 被销毁前调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。8、onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。
Activity生命周期图
Activity 函数的调用顺序与情况:
1、单个 Activity :
1、 正常启动onCreate-->onStart--> onReusme,
正常退出onPause-->onStop-->onDestory,
再次启动onCreate--> onStart-->onResume
2、 已经处于前台的Activity,点击主页按钮离开当前Activity,onPause-->onStop,
回到Activity: onRestart-->onStart-->onResume
3、 Activity不可操作onPause--= onStop (如:息屏,打开了其他Activity) ,而应用被强行杀死了再回到Activity, onCreate-->onStart-->onResume
2、多个 Activity
1、 当启动另—个Activity时,当前Activity : onPause-->onStop,
当点击返回按钮:
使另—个Activity退出时,当前Activity : onRestart-->onStart-->onResume
2、对话框存在时
1.普通对话框对生命周期没有任何影响
2.如果有个Activity伪装成对话框模式,那么当它启动时,之前的Activity : onPause“对话框”消失后,回调onResume再次回到前台
1、不设置Activity 的 android:confifigChanges时,切屏会重新回调各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。2、设置Activity 的 android:confifigChanges=”orientation” 时,切屏还是会调用各个生命周期,切换横竖屏只会执行一次3、设置 Activity 的 android:confifigChanges=”orientation |keyboardHidden” 时,切屏不会重新调用各个生 命周期,只会执行onConfifigurationChanged方法
版权声明:本文为CSDN博主 CongPong 的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CongPong/article/details/125891899