小谈Activity启动模式

Android的启动模式有四种,分别为:standard、singleTop、singleTask、singleInstance;这些都可以在AndroidManifest.xml文件中对应的标签设置android:launchMode,也可以在class文件中动态的设置(singleInstance除外)。

开发者可以根据实际需求为Activity设置对应的启动模式,以避免创建大量重复的Activity实例等问题。

下面介绍下各种启动模式的含义:

1.standard:标准模式,它也是系统的默认模式。此模式下的Activity每次启动都会创建一个新的Activity实例,不管这个Activity是否已经存在实例,被创建的Activity实例的生命周期为:onCreate->onStart->onResume。有一点有趣的地方,如果你用ApplicationContext 区启动standard模式的Activity的时候会报错,后来查了一些资料才知道:因为非Activity类型的Context并没有所谓的任务栈,而standard模式的Activity会默认进入启动它的Activity所属的任务栈中。

2.singleTop:在此模式下的Activity如果处于栈顶,且此时启动该Activity,并不会创建新的实例,onNewIntent方法会被调用。如果启动该Activity时,此Activity没有处于栈顶,此时则会为该Activity创建新的实例。

3.singleTask:设置这个模式的Activity在所属的任务栈中只会存在一个实例,若启动该Activity时已经存在Activity的实例,且不管当前实例处于栈的任何位置,都会把任务栈中处于该Activity实例对象上面的Activity实例清除掉,使其本身处于栈顶,此时的Activity会调用onNewIntent方法。

4.singleInstance:俗话说一山不容二虎,用来形容这个模式再恰当不过来,设置为这种模式的Activity只会单独的存在于一个任务栈中,无论怎么操作,它都不会再创建新的实例(除非这个任务栈被系统销毁了)


第一次写文章内心还是很忐忑的,有什么写的不对的请各位大牛多多指点,谢谢!!!

你可能感兴趣的:(小谈Activity启动模式)