Activity周期、加载模式理解

点击打开链接

加载模式,我认为这篇文章测试很详细 :点击打开链接 (如果觉得好,帮我顶一下哦)


[其它  singleTask的模式有个FLAG_ACTIVITY_BROUGHT_TO_FRONT]


下面自己对生命周期的补充:

10-1720:54:42.247: I/com.example.servicetest.AActivity(5817): onCreate() 1166919192taskID=66
10-1720:54:42.263: I/com.example.servicetest.AActivity(5817): onStart() 1166919192taskID=66
10-1720:54:42.263: I/com.example.servicetest.AActivity(5817): onResume() 1166919192taskID=66
10-1720:54:46.997: I/com.example.servicetest.AActivity(5817): onPause() 1166919192taskID=66
10-1720:54:47.021: I/com.example.servicetest.BActivity(5817): onCreate() 1166971824taskID=66
10-1720:54:47.028: I/com.example.servicetest.BActivity(5817): onStart() 1166971824taskID=66
10-1720:54:47.028: I/com.example.servicetest.BActivity(5817): onResume() 1166971824taskID=66
10-1720:54:47.099: I/com.example.servicetest.AActivity(5817): onStop() 1166919192taskID=66


1. 一个activity启动过程:onCreate() --->onStart()--->onResume(),此时处于running状态

2. 如果有另一个activity完全覆盖,那么onPuse--->onStop()会调用,若不完全覆盖,即原来activity还可见,则不会调用onStop() ;如果activity又回到前台显示,调用onResume()或onRestart()--->onResume()

3.不显示的activity,如内存不足了,由于其它进程的需要,可能杀掉进程销毁activity;当下次再回到这个activity,就需要执行整个启动过程


4.在running态,按BACK键,onPuse--->onStop() --->onDestory()调用,销毁activity

5.在running态,按HOME键onPuse--->onStop() 调用,不销毁activity,当下次再回到这个activity,就需要执行onRestart()--->onStart()--->onResume();


onCreat注释说大部分初始化再次进行,加载布局,findviewbyid等

onStart 开始显示给用户

onResume 活动开始与用户交互,并且打开独占设备,如camera

onPuse 活动调到后台,可能还可见,但不可交互;也可能不可见了;这里需要解除独占设备,停止动画等较消耗cpu的

onStop 活动对用户不再可见

onDestory 活动销毁,进行清理,不因再次保存数据,而应在puse;调用finish后会销毁活动


当用户触发某事件切换到新的Activity,用户肯定是想尽快进入新的视图进行操作,所以在onResume()一般会打开独占设备,开启动画等,

当需要从AActivity切换到BActivity时,先执行AActivity中的与onResume()相对应的onPause()操作,比如关闭独占设备,关闭动画,或其它耗费cpu的操作;
以防止BActivity也需要使用这些资源,关闭耗CPU的操作,也有利于BActivity运行的流畅。


底层执行onPause()时,有一定的时间限制的,当ActivityManagerService通知应用进程暂停指定的Activity时,如果对应的onPause()在500ms内还没有执行完,ActivityManagerService就会强制关闭这个Activity。

staticfinalintPAUSE_TIMEOUT = 500// 定义在ActivityStack.java中

当BActivity已经执行显示出来了,用户可以交互,后台再去执行AActivity的onStop()操作,即使这里面有些比较耗时的操作,也没有关系,这是在后台执行所以也不影响用户的体验。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值