Activity生命周期详解
一 Activity的四种状态:
Activity的生命周期中存在四种基本的状态:活动状态(Active/Runing),暂停状态(Paused),停止状态(Stopped),销毁状态(Killed)。每个状态下Activity都会拥有某些能力和失去某些能力。
-
活动状态(Active/Runing)
一个新的Activity入栈之后,当处于Activity的栈顶,此时它处于可见并且能与用户交互的激活状态,叫做活动状态或者运行状态。
期间触发的生命周期有: onCreate() -> onStart() -> onResume()。
-
暂停状态(Paused)
当Activity是去焦点,一个新的非全屏的Activity或者一个透明的Activity被放置在栈顶。注意:在Activity之上显示Dialog或者PoupWindow的时候,该Activity并不会变成暂停状态。一个处于暂停状态下的Activity只有再通极度匮乏的时候才会被回收掉。
运行状态到暂停状态触发的生命周期:onResume() -> onPause()。
从暂停状态恢复到运行状态触发的生命周期:onPause() -> onResume()。
-
停止状态(Stopped)
一个Activity被另外一个Activity完全覆盖掉,用户不可见或者退至后台,叫做停止状态。它仍然保持这所有状态跟成员信息,不能与用户交互。当系统内存需要的时候Stopped状态的Activity会被强制回收掉。
从暂停到停止状态触发的生命周期:onPause() -> onStop()。
从停止状态到运行状态触发的生命周期:onStop() -> onRestart() -> onStart() -> onResume()。不会走onCreate()。
-
销毁状态(Killed)
如果一个Activity再Paused或者Stopped状态,系统可以将Activity从内存中删除,删除的方式有两种:一种是要求Activity结束,一种直接结束掉它的进程。当有需要的时候就得重新创建Activity了。
触发的生命周期:onDestroy(),直接结束进程的话是不会走onDestroy()的。
上面是Activity在整个生命周期中展示的四种状态。程序员可以手动创建一个Activity,但不能手动的销毁一个Activity。也就是说当调用activity.finish()方法或者按下物理返回键去关掉一个Activity的时候,只是通知了AntivityManager该Activity可以被回收了,随后ActivityManage将采取一系列的回收措施,这是开发者无法干预的。
二 完整的生命周期:
Activity完整的生命周期 :
oncreate()->onstart()->onResume()->onRestart()->onPouse()->onStop()->onDestory()。
Activity在