Activity生命周期

Activity生命周期

先附上一张官网的lifeCycle图:

activity_lifecycle在这里插入图片描述

  1. onCreate()

    activity正在被创建,可在该方法中做些初始化的操作(initViews,initData…)

  2. onStart()

    activity正在被启动,此时activity已经可见,但还未到前台,未能获取到焦点,不能与用户交互

  3. onResume()

    activity已经启动,已经到前台,已获取到焦点,可与用户交互

  4. onPause()

    activity可见但已不在前台,已丢失焦点,不能与用户交互

  5. onStop()

    activity即将停止,已不可见,可做些轻量级的回收工作

  6. onRestart()

    activity重新启动,如果用户按下home键或菜单键或熄屏后,再次重新打开该activity时会执行该方法

    此时的生命周期为:onPause------onStop-----onRestart-----onStart-------onResume

  7. onDestroy()

    activity即将被销毁,在此方法中做释放资源等回收操作

以上是正常情况下的activity的生命周期,但是有时会出现一些异常情况导致activity被杀死。

异常情况下的生命周期

1.资源相关的系统配置发生变化导致activity被杀死并重新创建

比如当前activity是竖屏状态,如果旋转屏幕,由于系统配置发生了变化默认情况下activity会被销毁并重新创建。

onPause-------onSaveInstanceState(可能在onPause之前或之后)----------onStop--------onDestroy------onCreate----onStart--------onRestoreInstanceState------onResume

特别说明:onSaveInstanceState只有在activity异常终止的情况下,activity有可能被系统回收,该方法才会被调用。

以下情况下会被调用:

  • 用户按下home键,菜单键,熄屏
  • 旋转屏幕

在onSaveInstanceState和onRestoreInstanceState中系统自动做了一些保存恢复工作,比如文本框中用户输入的数据,RecyclerView滚动的位置等。关于保存和恢复view层次结构,系统采用的是委托思想,activity委托window保存数据,window再委托deccorView,一层一层的向下传递,类似于view的绘制流程,事件分发机制

2.资源内存不足导致优先级低的activity被杀死。

activity的优先级由高到低依次为:

前台activity-----------正在和用户交互的activity

可见但非前台activity-------------activity可见但是位于后台无法和用户交互,activity上弹出个Dialog

后台activity---------------已经执行了onStop

当系统内存不足时,系统会按照优先级的高低杀死目标activity所在的进程,并在后续通过onSaveInstanceState保存和恢复数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值