首页 > 代码库 > Activity的生命周期以及启动方式

Activity的生命周期以及启动方式

1、Activity的生命周期

     技术分享

     总的来说,Activity可以分为4种状态:

     1> 运行状态:当活动处于返回栈栈顶时,即用户交互时。

     2> 暂停状态:当活动不再处于栈顶,但依然可见。比如弹出对话框时,Activity是可见的,但是无法对其进行操作。

     3> 停止状态:活动不再处于栈顶,且不可见。系统任然会保留活动的相应状态和成员变量。

     4> 销毁状态:活动从返回栈中移出。

     针对Activity不同时期调用的不同方法,将Activity分为三个生存期

     1> 完整生存期:Activity在onCreate()和onDestory方法之间所经历的。一般在onCreate中完成各种初始化,在onDestory中释放内存。

     2> 可见生存期:Activity在onstart和onStop中所经历的。在该周期里,Activity对于用户是可见的,也许无法和用户进行交互(弹出框)。

     3> 前台生存期:Activity在onResume和onPause之间所经历的。该生存期下,活动是可见的,且是可以与用户交互的。

 

2、Activity的启动方式

     Activity一共有四种启动方式,在AndroidManifest.xml里通过属性“android:launcherMode”来设置。

     1> standard:默认模式,无论返回栈中是否已经存在该实例,都要创建一个新的实例,并处于栈顶的位置。

          A>B>A>A

     2> singleTop:当启动该Activity时,首先检测返回栈的栈顶是否存在该实例,如果没有,则创建新实例;如果已经存在且处于栈顶,则不创建。

          A>B>A ,再次启动A,返回栈:A>B>A

     3> singleTask:当启动该Activity时,检测返回栈中是否有该实例,如果没有则创建新实例,反之,将该实例之后的所有Activity销毁,处于栈顶。

          A>B>C ,启动A,返回栈:A

     4> singleInstance:之前的三种模式都无法实现共享活动的实例,因为每一个应用程序都有自己的返回栈,同一个活动在不同的返回栈中必然会创建新的实例。因此,可以设置           该Activity的启动方式为singleInstance,启动一个新的返回栈来管理该活动实现“共享活动实例”。

      

Activity的生命周期以及启动方式