Android Activity 生命周期

本文详细解析了Android应用活动从启动到销毁的生命周期流程,并解释了pause、stop和destroy状态出现的原因及恢复机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 activity启动的时候:onCreate ---> onStart ---> onResume 


 何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。


为了方便说明这里把当前activity称为MainActivity,其他的activity称为SecondActivity、ThirdActivity等等。
通过上图的我们可以看出activity从running状态跳转到onPause状态的原因是:Another activity comes into the foreground. 

 而当MainActivity完全被SecondActivity挡住,完全看不见的时候,此时MainActivity就会onStop:the activity is no longer visiable. 从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。
从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。

 

那么何时停留在onPause,何时停留在onStop呢?


下图的MainActivity就是处于onPause状态:



因为这里的second actvity是dialog样式:
<activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog">
也就验证了当MainActivity不再在最顶端,但仍然可见的时候,MainActivity就处于onPause状态,此时如果退出(back键)second activity,那么MainActivity就会onResume。


下图的MainActivity就是处于onStop状态(注意,这里的third activity 是在 MainActivity中通过startActivity启动的):

 


因为此时MainActivity已经完完全全被Thrid actvity挡住了,完全不可见了,所以MainActivity处于onStop状态,如果此时退出Thrid activity(back键),那么MainActivity就会onRestart().


何时onDestory呢?
当在MainActivity中按back键,退出时,最终就会走到onDestory,或者在代码中调用finish()的时候也会走到onDestroy这一步。

 


对于activity生命周期图的左侧部分:



当MainActivity处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,那么android系统就会将MainActivity所在的进程给杀了以释放资源。
当然被杀了之后,想重生,那必须得从头来过: onCreate ---> onStart() ---> onResume().

参考:http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值