Activity之LaunchMode——》启动模式

    在上一篇文章同一栈中栈顶Activity往中间Activity跳转后点击back键返回哪一个Activity?中举了个栗子简单解释了一下启动模式中的一种——singleTask(栈内复用模式)。那么这篇文章中呢,我就从实际开发中遇到的情况跟大家详细介绍一下我所理解的Activity之LaunchMode。

    1、standard(标准模式)也是默认模式。如图:

这种模式下,启动就新建,谁启动的就和谁在同一栈中。如上图中activity1和activity3都是Standard启动模式的。从栈顶点back键返回时从上往下依次出栈。

        2、singleTop(栈顶复用模式)。如图:


栈顶复用模式,顾名思义,这种模式的activity只有在栈顶的情况下,新启动此activity时不会被重新创建,直接复用。同时此activity的onCreate()、onStart()不会被调用。因为已经被打开了啊,并且会调用的是和上一篇博客里写的一样的onNewIntent()方法,后续操作就一样了哈。例如上图的activity4启动模式若是singleTop,如果再次启动activity4时那么栈里还是如图所示,不会新建的,重新打开activity4即可。那么如果上图栈中activity3启动模式为singleTop,再次启动activity3时因为它么有在栈顶,所以会重新创建。这里可以和singleTask对比着理解。

    3、singleTask(栈内复用模式)。不画图了。。。

这种模式也可以理解为好脾气的单实例模式,由于上篇文章里已经介绍过,所以这里再简单举两个栗子。这种模式的activity启动时看有没有需要入的栈没有的话就新建栈然后新建activity实例入栈,有的需要入的栈的话再看栈中有没有这个activity的实例,没有的话肯定要新建的啊,有的话直接复用。在栈顶最好,不在栈顶把上边清空,就是这么霸气!

    4、singleInstance(单实例模式)。这个呢就是坏脾气的单实例模式了,哥可以被复用,但是个必须单独在一个栈里。意思呢就是说如果activity1启动模式是singleInstance的,那么他一旦启动系统就会单独给他新开一个栈单独把他放进去。以后再启动activity1时直接就可以复用。


ps:为啥要有这几种启动模式?考虑特殊需求,考虑内存。

                                  

猜你喜欢

转载自blog.csdn.net/cunjicsdn/article/details/52662303