赞
踩
<正常情况下的生命周期分析>
1. 关于 onStart() onResume() 和 onPause() onStop()的实质区别:
onStart()和onStop()是对于Activity **是否可见**这个角度来进行的方法
而onResume()和onStop()是对于Activity **是否处于前台**这个角度来进行的方法,除此之外没有实质的区别
2. 假设当前的Activity为A,如果用户这个时候打开一个新的Activity B,那么B的onResume()和A的onPause()哪一个先执行?
简单理解,启动Activty的请求会由Instrumentation来处理,然后它通过Binder向AMS(ActivityManagerService)发送请求,AMS内部维护者一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期方法的调用。在ActivityStack中的ResumeTopActivityInnerLocker方法中的代码看出需要栈顶的Activity先onPause()后,新的Activity才会启动。最终在ActivityStackSupervisor中的realStartActivityLocked方法中调用scheduelLaunchActivity方法实现了新的Activity的onCreate、onStart、onResume的调用。
因此得出结论是**旧的Activity先onPause,新的Activity再启动
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。