关于Activity的生命周期,这个应该在很多Android书上都有讲的,自己写的目的是根据自己测试得出的结论,一方面是方便自己复习,另一方面是做个记录。
Activity1简称A1,Activity2简称A2,通过Activity1创建Activity2,Activity2启动后完全遮挡Activity1.
1.启动A1,点击A1上的按钮创建A2,然后点击A2中的按钮返回A1,方法调用顺序如下:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnCreat() -> A1 Onstart() -> A1 OnResume() -> A2 OnStop()
2.启动A1,点击A1上的按钮创建A2,然后点击Android自带的返回按钮,从A2返回A1,方法调用顺序如下:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnRestart() -> A1 Onstart() -> A1 OnResume() -> A2 OnStop() -> AC2 OnDestroy()
用红色标注的地方不同,为什么不同呢?因为在A2上点击返回A1是创建了一个新的Activity,而通过“返回按钮”返回A1则是根据出栈的原理。如下图所示:
AC2未能完全遮挡住AC1的情况是这样的,点击AC1上的按钮,弹出AC2:
A1 OnCreat() -> A1 OnStart() -> A1OnResume() -> A1 OnPause() -> A2 OnCreat() -> A2 OnStart() -> A2 OnResume() -> A1 OnStop() -> A2 OnPause() -> A1 OnResume() -> A2 OnStop() -> AC2 OnDestroy()
AC2中的按钮Go to First 是一条finish()指令,跟模拟器上的返回键效果是一样的。