Android四大组件——Activity的生命周期

1、正常情况下的生命周期主要涉及四个场景

(1)Activity启动时

onCreate():可以做一些初始化操作,比如调用setContentView加载界面布局资源    

onStart():activity处于用户可见的状态,但是还不能和用户进行交互(后台)    

onResume():activity处于用户可见状态,可以与用户进行交互(前台)

(2)Activity从可见变为不可见(点击Home键时、打开另一个Activity)

onPause():表明Activity处于用户可见,不可交互的状态(对应于onResume)    

onStop():表明Activity处于用户不可见,不可交互的状态(如果内存紧张,Activity会被回收)

(3)Activity从不可见变为可见(点击Home键返回主界面,再点击Launcher启动图标重新启动Activity)

onRestart():当Activity由不可见变为可见时调用    

onStart():用户可见,不可交互    

onResume():用户可见,可交互

(4)Activity退出时

onPause()     

onStop()    

onDestroy():Activity被回收销毁,资源被释放

2、异常情况下的生命周期

(1)系统配置改变导致Activity被杀死并重新创建(横竖屏切换时Activity会被销毁并重新创建)

由于系统配置导致Activity销毁属于异常情况下的异常情况下的销毁,系统会自动调用onSaveInstanceState()来保存销毁前的相关数据以便Activity重新创建时用于数据恢复,其中相关数据以Bundle对象存储;当Activity重新创建时,系统会把该Bundle对象传递给onRestoreInstanceState()和onCreate(),用户可以在这两个方法中获取Bundle对象进行数据恢复操作。

(2)系统内存不足导致优先级低的Activity被杀死

当系统内存资源不足的情况,系统会按照Activity优先级的高低杀死Activity,并会按照(1)的流程通过onSaveInstantState和onRestoreInstanceState来存储和恢复数据。

Activity的优先级高低如下:

1)前台Activity:正在与用于进行交互的Activity,优先级最高;

2)可见非前台Activity:可见但无法与用户交互的Activity;比如弹出一个对话框导致Activity可见但是无法与用户交互;


补充

1、当系统配置发生改变时,我们可以通过指定Activity的configChanges属性使Activity不被销毁并重新创建;

2、onSaveInstanceState()会在onStop()之前被调用;当Activity在异常情况下需要重新启动时,系统会默认保存当前Activity的视图结构,比如保存TextView的文本内容和文本选中状态、ListView的滚动位置等;

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