细品Activity启动模式之间的区别


启动模式一共有4种,可以在AndroidMainfest.xml中通过给<activity>标签指定android:launchMode属性来选择启动模式

standard

standard是Activity默认的启动模式,在不进行显示指定的情况下,所有Activity都会自动使用这种模式,在standard模式下,每当启动一个新的Activity,他就会在返回栈中入栈,并处于栈顶的位置,对于使用standard模式的Activity,系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建一个该Activity的新实例
在这里插入图片描述

singleTop

可能在有些情况下,你会觉得standard模式不太合理.
singleTop模式,当Activity的启动模式指定为singleTop,在启动Activity时如果发现返回栈的栈顶已经是该Activity,则认为可以直接使用它,而不用重新创建新的Activity实例
主要看栈顶是不是需要的Activity,是的话就不会重新生成,不是的话就会创建一个新实例
在这里插入图片描述

singleTask

如果该Activity并没有处于栈顶的位置,还是可能会创建多个Activity实例的.
当Activity的启动模式指定为singleTask,每次启动该Activity时,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈,如果发现没有就会创建一个新的Activity实例
在这里插入图片描述

singleInstance

不同于以上3种启动模式,指定为singleInstance模式的Activity会启用一个新的返回栈来管理这个Activity,假设我们的程序中有一个Activity是允许其他程序调用的,如果想实现其他程序和我们程序可以共享这个Activity实例,在这种模式下,会有一个单独的返回栈来管理这个Activity,不管是哪个应用程序来访问这个Activity,都共用同一个返回栈,也就解决了共享Activity实例的问题
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Hedenghui777/article/details/121780310
今日推荐