Android 中 Activity 的4种启动模式

在实际开发中,应该根据特定的需求为Android的每个Activity指定恰当的启动模式。Activity的启动模式有四种,分别是standard、singleTop、singleInstance、singleTask。在AndroidManifest.xml中,通过<activity>标签的android:launchMode属性可以设置启动模式。下面我就针对这四个启动方式具体给大家讲解一下。


一、standard模式

        因为standard模式是Activity的默认启动模式,所以在不指定的情况下,通常所有的Activity都是standard模式启动。在standard模式下,每启动一个新的Activity,他就会进入任务栈的最顶位置,对于使用standard模式的Activity,每次启动都会创建一个新的实例。

     下面图示进行模拟:


        依次点击入栈,都会有一个新的Activity进入,并且位于顶端,每次点击返回,位于顶端的Activity都会出栈,知道全部出来。


二、singleTop模式

        singleTop模式与standard模式有一点类似,不同的地方是当已经启动的Activity已经位于栈顶时,不会再创建新的实例,而是直接使用它。如果没有位于栈顶就会创建一个新的实例位于栈顶。它可以避免用户多次重复打开一个页面。

        下面图示表示这种模式:


       出栈时的情况和standard模式是一样的,按照顺序从栈顶依次出栈。


三、singleTask模式

        singleTask模式一般适用于程序的主界面。如果希望Activity在整个程序中只存在一个实例,可以选择singleTask模式。每次启动时,系统会先检查栈中是否存在该Activity实例,如果已经存在则直接使用,并且将当前Activity之上的所有Activity出栈,如果不存在则重新创建一个实例。

       下图表示该模式演示


      这种启动模式可以减少对系统资源的损耗与占用。


四、singleInstance模式

       在程序开发中,如果需要Activity在整个系统中有一个实例,那么就可以用singleInstance模式。与上面三种启动方式不同singleInstance启动模式的Activity,在启动的时候会开启一个新的Task Stack,这个BackStack里只有一个Activity的实例存在,并且把这个Task Stack获得焦点。这是一种很极端的模式,它会导致整个设备的操作系统里,只会存在一个这个Activity示例,无论是从何处被启动的。

     下图表示该模式演示:


           singleInstance模式加载Activity时,无论从哪个任务栈中启动,都会创建一个新的Activity实例,并且使用一个全新的任务栈来装载该Activity实例。采用这种模式启动会有两种情况,第一种,要启动的Activity不存在,系统会先创建一个新的任务栈,再创建一个Activity实例,并把该实例放在栈顶。第二种,如果要启动的Activity已经存在,无论位于哪一个任务栈中,系统都会把该Activity所在任务栈转到前台,从而使该Activity显示出来。

猜你喜欢

转载自blog.csdn.net/qq_41761551/article/details/80387695
今日推荐