四大组件|Activity的生命周期

掌握activity的生命周期对app的流畅至关重要。可以让我们在合理管理应用资源方面发挥得游刃有余,并让app拥有更好得用户体验。
本篇主要介绍Activity的生命周期及其相关应用。

  • 生命周期流程图
  • 四种活动状态
  • activity的生存期
  • 异常情况下activity的生命周期
  • Activity与Fragment,menu调用顺序

生命周期流程图:

四大组件|Activity的生命周期_第1张图片
activity流程图.png

四种活动状态:

活动状态 特点 回收情况
运行状态 处于栈顶 最不愿意回收
暂停状态 不处于栈顶但仍然可见 内存极低的情况,系统才会回收
停止状态 不处于栈顶且完全不可见 其他地方需要内存时,有可能被回收
销毁状态 从返回栈移除 系统最喜欢回收

activity的生存期:

7个回调方法:
  • onCreate():活动启动的第一个环节,可在该方法中完成初始化操作。
  • onStart():活动由不可见变为可见的时候调用。
  • onResume():活动准备和用户进行交互的时候调用。此时活动一定处于栈顶。
  • onPause():系统准备去启动或恢复另一个活动的时候调用。通常在这个方法中将一些消耗cpu的资源释放掉,以及保存一些关键数据,但执行速度要快,从而保证新activity的显示。
  • onStop():活动完全不可见的时候调用。与onPause()区别在于如果活动部分可见时,onPause()会得到调用,但onStop()不会。比如对话框。
  • onDestroy():活动销毁前调用。
  • onRestart():由停止状态变为运行状态之前调用,也就是活动重新启动时。由onStop()->onStart()。
3个生存期:
  • 完整生存期: onCreate()和onDestory()之间。一般onCreate()完成初始化动作,onDestroy()完成释放内存工作。
  • 可见生存期:onStart()和onStop()之间。通过这两个方法合理管理对用户可见的资源。比如在onStart()对可见资源进行加载,而在onStop()对这些资源进行释放,从而保证停止状态的活动不会占用太多的资源。
  • 前台生存期:onResume()和onStop()之间,此时的活动时和用户交互的。

异常情况下的生命周期:

系统资源配置发生改变或系统内存不足时,activity可能被杀死。

  • 资源配置:
    如当前activity由竖屏转换成横屏,activity就会被销毁并且重新创建。


    四大组件|Activity的生命周期_第2张图片
    activity异常情况.png

此种情况系统会调用onSaveInstance来保存当前activity的状态,这个方法在OnStop之前,与onPause没有时序关系。会将保存的数据作为Bundle对象传递给onRestoreInstanceState和onCreate()方法。
同时,在onSaveInstanceState和onRestoreInstanceState方法中,系统自动为我们做了一些恢复工作,如:文本框(EditeText)中用户输入的数据,ListView滚动的位置等,这些view相关的状态系统都能够默认为我们恢复。

Activity与Fragment生命周期关系:

  • 创建过程
  • 销毁过程

Activity与menu创建的顺序:

onResume后创建Menu,回调onCreateOptionMenu

参考:
《第一行代码》
Android四大组件

你可能感兴趣的:(四大组件|Activity的生命周期)