Android中Activity的初步接触(二)

Activity作为一个控件有其自己完整的生命周期,在各个不同状态下调用不同的生命周期函数。因此,了解并掌握Activity的生命周期是保证我们程序正常合理运行的前提。

Activity共有7个生命周期函数,分为4个状态。

  • 7个周期函数
    onCreate(),onStart(), onResume(),onPause(),onStop(), onRestart(), onDestroy()

  • 四种状态
    活动状态,暂停状态,停止状态,销毁状态

这里写图片描述

上边的Activity生命周期图完整的显示了Activity被调用的顺序和时机。

1. onCreate()
当Activity被创建时调用,只会被调用一次,可以做一些资源,空间的初始化的工作。
2. onStart()
当Activity启动时被调用。
3. onResume()
当Activity恢复时被调用,onStart()方法后边一定会调用,onResume(),常用于恢复Activity之前的工作状态。
4. onPause()
当Activity被暂停时调用。比如当Activity_A已经启动了,但是又启动了Activity_B,这时Activity_A会调用此方法。常用于保存Activity的工作状态。在内存不够时容易被回收。
5. onStop()
当Activity被停止时调用。当Activity 被新启动的Activity长时间覆盖,变得不完全不可见时会从暂停状态转变为停止状态。在该状态下的Activity当内存不够时会被优先回收。
6. onRestart()
当Activity重新启动的时候被调用。指该Activity从停止状态获取到焦点转变到活动状态时调用该方法。
7. onDestroy()
当Activity被销毁是调用,可以做一些资源的释放等的工作。


正常启动一个Activity时打印的日志
这里写图片描述

跳转到另一个Activity时打印的日志
这里写图片描述

失去焦点,Activity不可见时打印的日志
这里写图片描述

重新获取焦点时打印的日志
这里写图片描述

从活动状态被手动的kill掉时打印的日志
这里写图片描述

在后台被kill掉时打印的日志
这里写图片描述

这就是Activity基本的生命周期函数及其四种状态的转换和调用。

异常情况下的Activity生命周期:

当Activity不是正常的结束生命周期,而是发生意外情况时生命周期也是不同的,多了一个状态的保存和恢复:
onSaveInstanceState()和onRestoreInstanceState()方法而且这两个方法也是只有当Activity还有可能再次回到前台时才会调用。

首先说一下什么叫发生意外情况:就是当Activity的配置信息发生变化时,例如由竖屏切换为横屏这种情况。

举例(横竖屏切换):

当由竖屏切换为横屏时,首先Activity会被销毁,因为只是切换屏幕方向,所以有可能会回到前台,所以在调用onStop()方法之前,会调用onSaveInstanceState()方法来进行数据的保存,然后销毁当前的Activity。接着会重新创建一个Activity实例,并在调用onResume方法之前调用onRestoreInstanceState()方法来恢复数据。

onPause()和onSaveInstanceState()的区别:

  • onPause()方法是Activity生命周期中的方法,只要是当Activity处于暂停装态时就会被调用,而onSaveInstanceState()只有当Activity异常终止情况下才会被调用。

  • onSaveInstanceState()和onPause()的调用顺序没有关联,可能在其之前也可能在其之后。

onRestoreInstanceState(Bundle savedInstanceState)和onCreate(Bundle savedInstanceState)的区别:

  • 在onResStoreInstanceState中可以保证传入的bundle数据一定是非空的,不必进行非空判断,而在onCreate中,bundle数据可能为空(Activity正常启动)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值