【Android 基础】Activity 生命周期实战

1、Activity 的生命周期

  • onCreate:Activity 正在被创建,通常做一些初始化的操作,比如:调用 setContentView 去加载界面布局资源,初始化 Activity 的数据。
  • onStart:Activity 正在被启动,Activity 即将开始,这个时候Activity 已经可见,但是还没有出现在前台,无法和用户进行交互,这个时候 Activity 可以理解为已经显示了,但是我们还看不到,此时无法获取焦点。
  • onResume:Activity 已经前台可见,此时用户可以获取焦点,进行界面交互。
  • onPause:当系统将要恢复一个之前的活动。这是一个有代表性的常常用于提交未被存储的改动信息为持久数据,停止动画和消耗CPU的东西等。实现该方法必须要特别的迅速,因为在此方法返回之前,下一个活动将不会恢复。如果活动将返回到前台则接下来调用onResume(),如果要隐藏到用户看不见的地方时,则调用onStop();
  • onStop:当另一个活动被恢复且完全覆盖该活动,而该Activity将不在展示给用户时调用。这种情况将发生在一个新的活动将被开始,一个退出的活动将被恢复,又或者该活动将要被销毁。如果该活动将恢复与用户交互则调用onRestart(),如果该活动将被销毁则调用onDestory()。
  • onDestory:Activity被销毁钱最后一个被调用的方法。这个方法将会发生因为活动将会结束(在活动中调用finish()方法,或者系统临时销毁该实例节约空间。你可以使用isFinishing()方法区别这两种场景)。

2、Activity 的四种状态

  • Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
  • Paused状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点,故不可与用户交互。
  • Stopped状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。
  • Killed状态:Activity被杀掉以后或者被启动以前,处于Killed状态。这是Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

                            

                                                 

3、关于Activity切换生命周期变化:

  • MainActivity 启动 ActivityA
I/MainActivity:  MainActivity onCreate 
I/MainActivity:  MainActivity onStart 
I/MainActivity:  MainActivity onResume 
I/MainActivity:  MainActivity onPause 

I/MainActivity:  ActivityA onCreate 
I/MainActivity:  ActivityA onStart 
I/MainActivity:  ActivityA onResume 

I/MainActivity:  MainActivity onStop 

I/MainActivity:  ActivityA onPause

I/MainActivity:  MainActivity onRestart 
I/MainActivity:  MainActivity onStart 
I/MainActivity:  MainActivity onResume 

I/MainActivity:  ActivityA onStop 
I/MainActivity:  ActivityA onDestroy 
  • 当前界面如果将下拉菜单滑动下来
    嗯嗯比较奇怪,就是什么生命周期都不走!!!

  • 横竖屏选择
    1.如果配置了
    android:configChanges="orientation|keyboardHidden|screenSize"
    横竖屏选择的生命周期

I/MainActivity:  ActivityA onConfigurationChanged 
I/MainActivity:  ActivityA onConfigurationChanged 

      注意:其他的生命周期并没有走,只走了这几个!!

      2.如果没有配置configChanges,就不会回调onConfigurationChanged ,其生命周期如下:

I/MainActivity:  ActivityA onPause 
I/MainActivity:  ActivityA onSaveInstanceState 
I/MainActivity:  ActivityA onStop 
I/MainActivity:  ActivityA onDestroy 

I/MainActivity:  ActivityA onCreate 
I/MainActivity:  ActivityA onStart 
I/MainActivity:  ActivityA onResume 

参考博客:
https://www.jianshu.com/p/b5a72a741025

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值