Activity生命周期的剖析篇一

Android开发无可避免的要对生命周期有一个完整的掌握,以前没时间整理,正好趁这过年无聊之际,整理一篇Activity的完整生命周期。

首先,先来了解一副图解

Created with Raphaël 2.1.2 Activity is launched onCreate() onAttachFragment() onStart() onRestoreInstanceState() onPostCreate() onResume onPostResume() onAttachedToWindow() onCreateOptionsMenu() onPrepareOptionsMenu() Activity is running onPause() onSaveInstanceState() onStop() onRestart() onDestroy() Activity is shut down yes no

通过以上流程图,我们大概了解了Activity的基本所有周期的调用方法,现在,用一个Activity跳转的小实例来剖析Activity之间的跳转时方法调用顺序。

FirstActivity和SecondActivity的创建并带上基本的调用方法,用log输出来观察方法何时被调用的,情况如下:
1)在打开FirstActivity时依次执行onCreate()->onStart()->onResume(),
FirstActivity入栈;
2)再点击FirstActivity跳转到SecondActivity
此时先执行FirstActivity的onPause()方法,
再执行SecondActivity中的onCreate()->onStart()->onResume(),
SecondActivity入栈,
最后才会执行FirstActivity的onStop()方法,此时SecondActivity在栈顶;
3)而在Android手机上少不了的按键——返回键和home键
a、当按下返回键时:

先执行SecondActivity的onPause()方法,再执行FirstActivity的onRestart()->onStart()->onResume(),此时MainAcitivity回到栈顶;
当一切准备就绪后,SecondActivity执行onStop()->onDestroy(),
此时SecondActivity()出栈。

b、当按下home键时:

当按下home键时就已表示程序推入到后台了,此时会执行Activity的onPause()->onStop(),而不会执行onDestroy(),当用户再次从后台打开该程序后执行onRestart()->onStart()->onResume()恢复。

小结:凡应用退入到后台或从下一个界面返回上一层界面时(等同于按下返回键效果)都输入重新构建UI,都会按照顺序执行方法onRestart()->onStart()->onResume()来恢复界面;凡新开启的界面都会按照顺序执行方法onCreate()->onStart()->onResume()。

猜你喜欢

转载自blog.csdn.net/dota_wy/article/details/79334478