Activity的生命周期

Activity有三种状态:
活动或者称作运行状态:当Activity获得焦点时,Activity处于运行状态,负责与用户交互,此时的Activity处于Activity栈的最顶端;

暂停状态:Activity失去焦点但仍然可见的状态;比如被一个透明的Activity覆盖,或者被非全屏的Activity覆盖,暂停的Activity 没有被系统杀死,系统保存了它的状态,可以恢复到暂停以前的状态,但是当系统内存不足的情况下,会回收暂停的Activity。

停止状态:Activity被另一个Activity完全覆盖,系统可以回收它,通过通知它调用finish方法,或者直接杀掉它的进程,当它恢复显示的时候,它必须重新开始,重新恢复之前的状态。

Activity从一个状态运行到另一个状态,状态改变时会执行相应的周期方法:

void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

一个七个周期方法,你可以重写这些方法,当状态改变时来完成你的工作,所有的Activity必须重写
onCreate方法,Activity第一次运行的时候会执行此方法,你可以在此方法中完成一些初始化操作。

在七个周期方法中,包含着三个嵌套的周期:
完整的生命周期:
onCreate()到onDestroy()方法,onCreate()方法中经常做一些全局的初始化操作,onDestroy()中释放或者保存资源.

可见生命周期:
onStart()到onStop()方法,在这个周期中,用户可以看见Activity,但不一定能够与之交互,这两个方法可以随着状态的变化被执行多次。

前景生命周期:
onResume()到onPause()方法,在这个周期中,Activity处在其它Activity之前,即在Activity栈的最顶端,负责与用户进行交互,伴随着状态的变化,这两个方法可以被执行多次。

当Activity的进程被杀掉之前,一定会执行方法,onPause(),可能会执行onStop(),onDestroy(),所以可以在opause()方法中做一些持久化操作。

保存Activity状态:
onSaveInstanceState()方法,在activity被回收之前调用,即在onpause()方法执行前调用,系统提供一个Bundle对象,可以用来存储状态信息,当Activity重新开始后,系统会把Bundle对象传给onCreate方法,onRestoreInstanceState()方法,可以在它们中恢复状态。

用户点击back键时不会触发onSaveInstanceState()方法。

测试中发现,当前Activity上弹出一个对话框后,Activity失去焦点,但仍然可见,此时不会触发onPause()方法,取消对话框后,也不会触发onResume()方法,当前Activity上弹出一个对话框主题的Actiivty后,onPause()方法会被触发,返回时onResume()方法会被触发,即周期方法的触发是Activity级别的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值