本文主要參考这篇文章和任玉刚的《Android开发艺术探索》一书,谢谢两位作者!
经典的activity生命周期图
(图片来源于网络):
1、
onCreate
:
Activity
被创建时调用
2、onStart:Activity正在被启动,已经可见,但还未出如今前台。还不能和用户进行交互
3、
onResume:
Activity已经可见。并出如今前台,能够和用户进行交互了
4、
onPause:
Activity正在停止。能够做一些存储数据、停止动画等操作,但不能太耗时。由于
onPause必须先运行完,新的
Activity的
onResume才会运行
5、
onStop:相同不能做
太耗时的操作
6、
onDestory:
Activity被销毁时调用
7、
onRestart:
Activity正在被又一次启动,普通情况下。当
Activity从不可见又一次变为可见时,
onRestart方法就会被调用
下边是7个方法被调用的详细场景:
A、第一次进入:
对上面的log显示情况做一下简单总结:
一、onStart和
onResume
方法
、
onPause和
onStop方法从描写叙述上看是几乎相同的,在普通情况下,没有明显的差别,
他们总是成对的出现,而且
onStop方法总是接着
onPause得到运行,但在有些情况下,仅仅会运行
onPause而不会运行
onStop。比方上边的C,而这就能够看出
onPause和
onStop的某些差别(
onStart和
onResume同理
)
。
二、
onSaveInstanceState方法的调用时机是在onStop之前。但它和
onPause究竟谁先被调用,还未找到根据。
在本文开头提到的文章中,作者的測试显示
onSaveInstanceState先运行。而本文中測试结果则显示 onSaveInstanceState后运行。
三、在以上的測试中。仅仅有onSaveInstanceState方法被调用了,而
onRestoreInstanceState
方法却并没有被调用。採用
《android开发艺术探索》一书中的话来说。系统仅仅会在
Activity即将被销毁而且有机会又一次显示的情况下才会去调用
onRestoreInstanceState方法。如:
D、横竖屏切换时:
E、假设不想让Activity在屏幕旋转的时候又一次创建,就能够给configChanges属性加入orientation这个值:
F、指定横竖屏:
能够在清单文件里设置android:screenOrientation="portrait",或是在Java文件里使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
指定为竖屏,
在清单文件里设置android:screenOrientation="
landscape
"。或是在Java文件里使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
指定为横屏。
在这两种情况下,屏幕方向发生改变时,没有不论什么方法被调用。
G、退出Activity:
本文深入探讨Android中Activity的生命周期,包括七个关键阶段:onCreate、onStart、onResume、onPause、onStop、onDestroy及onRestart。通过具体场景演示各阶段如何被触发,并讨论了与屏幕旋转和数据持久化相关的特殊行为。
1779

被折叠的 条评论
为什么被折叠?



