Activity的四种启动模式

Activity的四种启动模式

    • Standard模式
    • SingleTop模式
    • SingleTask模式
    • SingleInstance模式

Activity的启动模式有4种,分别是standard.singleTop. SingleTask. singleInstance,可以在AndroidMainifest.xml文件中指定每一个Activity的启动模式。一个Android应用一般都会有多个Activity,系统会通过任务栈来管理这些Activity。一般可以不指定启动模式,默认启动模式是standard模式。下面简单介绍下四种启动模式。

Standard模式

Standard模式是Android的默认启动模式,这种模式下,Activity可以有多个实例,每次启动Activity时,不管任务栈中是否已经有这个Activity的实例,系统都会创建一个新的Activity实例。

SingleTop模式

SingleTop模式和standard模式类似,主要区别是当一个singleTop模式的Activity已经位于任务栈的栈顶,接着去启动它的时候,不会再创建新的实例,如果不是位于顶,就会创建新的实例,把配置文件中FirstActivity的启动模式改为SingleTop,应用就会只有一个Activity,FirstActivity就会自然处于任务栈的栈顶。当应用第一次启动后,我们再按Button去启动新的FirstActivity,Log信息中不再打印onCreate函数,不再创建新的FirstActivity实例。

SingleTask模式

SingleTask模式的Activity在同一个Task内只有一个实例,如果Activity位于栈顶,系统就不会创建新的实例,和singleTop模式一样。但Activity已经存在但不位于栈顶时,系统就会把该Activity移到栈顶,并把它上面的activity出栈。修改上面的程序,新建一个SecondActivity,将FirstActivity设置为singleTask启动模式,并让它启动SecondActivity,再让SecondActivity来启动FirstActivity。
singleTask模式和前面两种模式的最大区别就是singleTask模式是任务内单例的,当activity是否需要单例时就可以设定Activity为singleTask模式。比如Activity里面有一个列表有多个实例,可能导致用户看到的列表不一致,有的Activity需要经常启动,如果每次都创建实例,会导致占用资源过多,这时可以使用singleTask模式,但启动singleTask模式的Activity会导致它上面的Activity被销毁,使用时需要注意。

SingleInstance模式

SingleInstance模式也是单例的,但和singleTask不同,singleTask只是任务栈内单例,系统里是可以有多个singleTask Activity实例的,而singleInstance Activity在整个系统里只有一个实例,启动一singleInstanceActivity时,系统会创建一个新的任务栈,并且这个任务栈只有他一个Activity。

    SingleInstance模式不常用,如果我们把一个Activity设置为singleInstance模式,启动他时会慢一些,切换效果不好,影响体验。一个班用于多个应用之间,例如一个电视launcher里的Activity,通过遥控器某个键在任何情况可以启动,这个Activity就可以设置为singleInstance模式,当在某应用中按键启动这个Activity,处理完后按返回键,就会回到之前启动它的应用,不影响用户体验。

你可能感兴趣的:(Activity的四种启动模式)