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,启动一个新的返回栈来管理该活动实现“共享活动实例”。