Android四种启动模式

   在Android开发中,我们常常需要配置activity的启动模式来达到不同场景下我们想要的效果。我们知道activity的启动模式有四种,standard,singleTop,singleTask,singleInstance。这四种模式又有什么区别呢?

standard,singleTop singleTask为单栈启动模式,standard每次会启动多个当在AB之间切换时栈中会出现AB AB重复出现的情况,singleTop A->B 然后B->A则B被移出 A位于栈顶,singleTask 如果和singleTop差不多只是singleTask是冲栈中找到如果有放入栈顶没有创建,singleTop是从栈顶找,如果存在不新建实例如果存在就不新建,singleInstance 为多栈启动模式,一个栈中只有一个activity

     1.standard模式是activity的默认启动模式,如果我们没有指定activity的启动模式的时候,默认就是standard模式。它的特征就是,不管我们的activity栈里面有没有当前activity的实例,都会重新启动一个activity。for eg.  activity A 启动 activity B,再由activity B启动activity B,如下。(activity A,activity B都是standard模式)那么我们的activity 任务栈中将会是如下的情况。

2.singleTop模式和standard模式一样,都会产生一个新的实例,不过不一样的是,当发现activity栈顶已经存在,则不会创建新的实例。如果栈顶不存在,跟standard模式一样。如下:activity B为singleTop模式。那么我们的activity任务栈将会是如下的情况。此时activity B已经在栈顶,当再次启动activity  B的时候,就不会创建新的实例。singleTop模式可以用来解决栈顶多个重复相同activity的问题。

   3.singleTask和后面的singleInstance都只会创建一个实例,当intent来的时候,需要创建singleTask实例的时候,就会从activity栈中查找有没有当前的实例,如果有则把它放到栈顶,它上面的activity则会被移除,如果没有,则创建。例如:activity A为singleTask模式,A启动B,再由B启动A.我们会看到activity栈中只会有activity A。B启动A的时候发现栈中存在A,则直接使用A,然后把B从栈顶中移除。

    4.singleInstance模式会重新启动一个新activity栈,并且该栈中只会存在一个当前activity,主要用于解决多个task共享一个activity的问题。如下A,C为standard模式, B为singleInstance模式。A启动B,B再启动C 那么我们会看到会出现2个任务栈。

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