Android Activity的生命周期及启动模式

来源:互联网 发布:淘宝买化妆品可靠吗 编辑:程序博客网 时间:2024/05/16 17:01

activity启动模式

standard
singleTop
singleTask
singleInstance

<activity      android:name="com.lh.test.testActivity"      android:launchMode="standard" />  

standard
默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

singleTop
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会创建一个新的实例。若存在,则会把activity栈中在其之上的其它Activity destory掉并调用它的onNewIntent方法。

如果是在别的应用程序中启动它,则会新建一个activity栈,并在该栈中启动这个Activity,singleTask允许别的Activity与其在一个栈中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的栈中。

singleInstance
只有一个实例,并且这个实例独立运行在一个栈中,这个栈只有这个实例,不允许有别的Activity存在。

activity的生命周期

onCreate()//在活动第一次被创建的时候调用,创建方法

onStart()//有不可见变为可见的时候调用,开始方法

onResume()//在活动准备好和用户进行交互的时候调用,开始方法

onRestart()//有停止状态变为运行状态之前调用,重新开始方法

onPause()//在系统准备去启动或者恢复另一个活动的时候调用。通常用这个方法将一些消耗cpu的资源释放掉,暂停方法

onStop()//活动完全不可见的时候调用。,停止方法

onDestroy()//由可见变为不可见的时候,销毁方法

activity启动情景:
1.启动Activity:onCreate() >> onStart() >> onResume(),Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:onPause(),暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:onResume(),再次进入运行状态。

4.当前Activity转到新app的Activity界面或按Home键回到主屏,自身退居后台:onPause() >> onStop(),进入停滞状态。

5.用户后退回到此Activity:onRestart() >> onStart() >> onResum(),再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity
onCreate() >> onStart() >> onResume(),进入运行状态。

7.用户退出当前Activity:onPause() >> onStop() >> onDestory(),结束当前Activity。

最后放上一张关于activity的生命周期的图,这张图让activity的生命周期非常好理解:
这里写图片描述

可以看出,整个activity的活动都是以一种onCreate>onStart>onResume>onPause>onStop>onDestory这条主线来走的,当activity被覆盖成为不可见状态的时候则会多一步onRestart然后依然走上述路线

原创粉丝点击